菜鸟玩qt(2)---翻译QSqlTableModel Class帮助文档

QSqlTableModel Class 参考(来自 QtSql 模块)
该类为单个数据表提供一种可编辑的数据模型。
#include <QSqlTableModel>
该类不是 Qt GUI Framework Edition 中的一类。
继承 QSqlQueryModel
被继承 QSqlRelationTableModel
 
公共类型:
       enum EditStrategy{OnFieldChange,OnRowChange,OnManualSubmit}
公共函数:
                     QSqlTableModel(QObject* parent =0,QSqlDatabase db=QSqlDatabase())
       virtual     ~QSqlTableModel
QSqlDatabase        database() const
EditStrategy          editStrategy() const
Int                        filedIndex(const QString & fieldName)const
QString                 filter()const
bool                      insertRecord(int row,const QSqlRecord&record)
bool                      isDirty(const QModelIndex&index)const
QSqlIndex             primaryKey()const
virtual void            revertRow(int row)
virtual bool            select();
virtual void            setEditStrategy(EditStrategy strategy)
virtual void            setFilter(const QString&filter)
bool                   setRecord(int row,const QSqlRecord&record)
virtual void            setSort(int column,Qt::SortOrder order)
virtual void            setTable(const QString&tableName)
QString                 tableName()const
 
重用公共函数
virtual void            clear()
virtual QVariant      data(cost QModelIndex&index,int role=Qt::DisplayRole)const
virtual Qt::ItemFlags      flags(const QModelIndex&index)const
virtual QVariant headerData(int section,Qt::Qrientation orientation,int role=Qt::DisplayRole)const
virtual bool     insertRows(int row,int count,const QModelIndex&parent=QModelIndex())
virtual bool removeColumns(int column,int count,const QModelIndex&parent=QModelIndex())
virtual bool removeRows(int row,int count,const QModelIndex&parent=QModelIndex)
virtual int       rowCount(const QModelIndex&parent=QModelIndex())const
virtual bool     setData(const QModelIndex&index,const QVariant&value,int role=Qt::EditRole)
virtual void     sort(int column,Qt::SortOrder order)
 
16 个公共函数继承从 QSqlQueryModel
2 个公共函数继承从 QAbstractTableModel
35 个公共函数继承从 QAbstractItemModel
29 个公共函数继承从 QObject
 
公共槽
virtual void     revert()
void               revertAll()
virtual bool     submit()
bool               submitAll()
 
2 个公共槽继承从 QAbstractItemModel
1 个公共槽继承从 QObject
 
信号:    
void        beforeDelete(int row)
void       beforeInsert(QSqlRecord&record)
void        beforeUpdate(int row,QSqlRecord&record)
void        primeInsert(int row,QSqlRecord&record)
 
18 个信号继承从 QAbstractItemModel
1 个信号继承从 QObject
 
受保护的函数              
virtual bool     deleteRowFromTable(int row)
QModelIndex  indexInQuery(const QModelIndex&item)const
virtual bool     insertRowIntoTable(const QSqlRecord&values)
virtual QString       orderByClause()const
virtual QString       selectStatement()const
void               setPrimaryKey(const QSqlIndex&key)
void               setQuery(const QSqlQuery&query)
virtual bool     updateRowInTable(int row,const QSqlRecord&values)
 
3 个受保护的函数继承从 QSqlQueryModel
21 个受保护的函数继承从 QAbstractItemModel
7 个受保护的函数继承从 QObject
 
附加的继承的成员
1 个特性继承从 QObject
5 个静态公共成员继承从 QObject
 
 
 
详细描述:
       该类是一种为从单一数据表读写数据库的高层次的接口。他是建立在低层次的 QSqlQuery 上的,能够被用来提供数据给视图类,例如 QTableView
QSqlTableModel *model = new QSqlTableModel;
model->setTable(“employee”);  // 查询 employee 这个表
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0);  // 不显示 ID
model->setHeaderData(0,Qt::Horizontal,tr(“Name”));
model->setHeaderData(0,Qt::Horizontal,tr(“Salary”));
 
QTableView *view = new QTableView;
view->setModel(model);
view->show();
 
我们设置 SQL 表的名字,编辑策略,然后我们建立显示在标题栏的标签。编辑策略指定当用户在 view 中改变数据时,也同样应用到数据库中。可能的选项是 OnFieldChange,OnRowChange,OnManualSubmit.
QSqlTableModel 也能被用来程序化地进入数据库,不绑定到一个 VIEW.
 
QSqlTableModel model;
Model.setTable(“employee”);
QString name = model.record(4).value(“name”).toString();
 
上面的代码段从查询“ select * from employee ”结果中的记录 4 ,提取工资域。
可以用 setFilter() 设置过滤器,用 setSort() 修改分类顺序。最后,你必须调用 select() 把数据添加到模型中。
Sql/tablemodel 例子说明怎样用 QSqlTableModel 作为 QTableView 的数据源。
QSqlTableModel 没有提供对外来键的直接支持。用 QSqlRelationTableModel QSqlRelatinalDelegate 来解决外来键的问题。
也看 QSqlRelationTableModel,QSqlQuery,Model/View Programming,Table Model Example, Cached Table Example.
 
成员类型程序说明
enum QSqlTableModel::EditStrategy
这个 enum 类型描述当编辑数据库的值时,哪一种策略被选择。
 
QSqlTableModel::OnFieldChange    0    所有改变立即被应用到数据库
QSqlTableModel::OnRowChange     1    在一行的改变将在用户选择另一行时被应用
QSqlTableModel::OnManulSubmit   2    所有改变将被放到缓存,直到调用 submitAll() revertAll()
 
注意:为阻止只是部分初始化的行插入数据库,对于新插入的行, OnFieldChange 将和 OnRowChange 作用相同。
也看 setEditStrategy()
 
成员函数程序说明
 
QSqlTableModel::QsqlTableModel(QObject *parent=0,QSqlDatabase db=QSqlDatabase())
创建一个空的 QSqlTableModel ,并且设置父系为参数 parent 和数据库为 db 。如果 db 是无效的,缺省的数据库连接将被使用。
缺省的编辑策略是 OnRowChange
 
QSqlTableModel::~QSqlTableModel() [virtual]
毁掉对象并释放所有被分配的资源
 
void QSqlTableModel::beforeDelete(int row) [signal]
这个信号在某行从目前活动的数据表被删除时,从 deleteRowFromTable() 发出。
 
void QSqlTableModel::beforeInsert(QSqlRecord&record)  [signal]
这个信号在某行被插入到目前活动的数据表时,被 insertRowIntoTable() 发出。这个即将被插入的值被存储在 record ,在他们将被插入之前能被更改。
 
void QSqlTableModel::beforeUpdate(int row,QSqlRecord&record) [signal]
这个信号在某行被更新之前,从 updateRowInTable() 发出。
注意:只有被标记为生成的值才被更新。生成标志可通过 QSqlRecord::setGenerated() 设置,并且用 QSqlRecord::isGenerated() 检查。
也看 QSqlRecord::isGenerated()
 
void QSqlTableModel::clear()  [virtual]
重载从 QSqlQueryModel::clear()
Void QSqlQueryModel::clear()  [virtual]
清除模型,释放任何获得的资源
 
QVariant QSqlTableModel::data(const QModelIndex&inex,int role=Qt::DisplayRole)const [virtual]
重载从 QAbstractItemModel:;data()
也看 setData()
QVariant QAbstractItemModel::data(const QModelIndex&index,int role=Qt::DisplayRole)const [pure virtual]
返回数据,该数据存储位置由 index 所指的项目和 role 确定。
注意:如果你没有一个值返回,返回一个无效的 QVariant 代替返回 0
也看 Qt::ItemDataRole,setData() headreData()
 
QSqlDatabase QSqlTableModel::database() const
如果没有数据库被设置,返回一个指针指向使用的 QSqlDatabase
 
Bool QSqlTablemodel::deleteRowFromTable(int row) [virtual protected]
删除被给的行从目前的数据表。
这是一个低层次的直接操作数据库的方法,不应该被直接调用。使用 removerow() removeRows() 删除值。当更改数据库时,这个模型将决定依赖他的编辑策略。
如果该行被删除返回真;否则返回假
也看 removeRow() removeRow()
 
EditStrategy QSqltableModel::editStrategy() const
返回目前的编辑策略
 
Int QSqlTableModel::fieldIndex(const QString&fieldname) const
返回 filename 所指的域的 index
 
QString QSqlTableModel::filter() const
返回目前设置的过滤器
 
Qt::Itemflags QSqlTableModel::flags(const QModelIndex&index)const [virtual]
重载从 QAbstractItemModel::flags()
Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex&index)cosnt [virtual]
返回 index 对应项目的标志
这个基类执行返回一个联合体或者标志,这个标志激活项目( ItemIsEnabled )并允许它被选择 (ItemIsSelectable)
 
QVariant QSqlTableModel::headerData(int section,Qt::Orientation orientation,int role=Qt::DisplayRole)cosnt [virtual]
重载 QAbstractItemModel::headerData()
QVariant QAbstractItemModel::headerData(int section,Qt::Orientation orientation,int role=Qt::DisplayRole)const [virtual]
返回数据,根据 role, 在标题的哪个 section, 以及特别的 orientation( 方向 ).
对于水平的标题, section 与列数关联。相似的,对于垂直的标题, section 和行数关联。
也看 Qt::ItemDataRole,setHeaderData() QHeaderView
 
QModelIndex QSqlTableModel::indexInQuery(const QModelIndex &item)const [protected]
返回 item 在数据库的 index 值。
如果没有行被插入,移动等,这个返回值与 item 是对应相同的
如果 item 不在范围之内或者如果 item 不指向结果集中的一个值,将返回一个无效的 index
也看 QSqlQueryModel::indexInQuery()
 
Bool QSqlTableMode::insertRecord(int row,const QSqlRecord&record)
在行后插入记录。如果行是拒绝的,记录将被添加到最后。立即调用 insetRows() setRecord()
如果行能被插入,返回真
也看 insertRows() removeRows()
 
Bool QSqlTableModel::insertRowIntoTable(const QSqlRecord&values) [virtual protected]
插入值到数据表中
这是一个低层次的直接操作数据库的方法,不应该被直接调用。使用 inssertRow() setData() 来插入值。当更改数据库时,这个模型将决定依赖编辑策略。
如果这个值能够被插入,返回真,否则返回假。错误值能被 lastError() 找到
也看 lastError(),insertRow(),insertRows()
 
Bool QSqlTableModel::insertRows(int row,int count,const QModelIndex&parent=QModelIndex()) [virtual]
重载 QAbstractItemModel::insertRows()
插入 const 空行在位置 row.
注意: parent 必须是无效的,因为这个模型不支持父子关系
同一时间只有一行被插入,当使用 OnFieldChange OnRowChange 更新策略时
primeInsert() 信号将被发出为每个新行。如果你想初始化新行用缺省值,连接它。
如果参数是不在范围之内,返回假,否则返回真
也看 primeInsert() isnertRecord()
 
Bool QSqlTableModel::isDirty(const QModelIndex &index)cosnt
如果在 index 的值是 dirty ,返回 true Dirty 值指该值被修改但是没有被写入数据库
如果 index 是无效的或者指向一个不存在的行,返回 false
 
QString QSqlTableModel::orderByClause()const [virtual protected]
按照目前的排序规则返回一个 sql
也看 setSort() selectStatement()
 
QSqlIndex QSqlTableModel::primaryKey()const
为目前的表返回逐渐。如果表没有被设置或者没有主键将返回一个空的 QSqlIndex
也看 setTable(),setPrimaryKey(),QSqlDatabase::primaryIndex()
 
Void QSqlTableModel::primeIndert(int row,QSqlRecord&record)[signal]
这个信号被 insertRows() 发出,当一个插入操作被初始化。 Record 参数能被写,例如填入一些域用缺省值
 
Bool QSqlTableModel::removeColumns(int column,int count,const QModelIndex&parent=QModelIndex())[virtual]
重载 QAbstractItemModel::removeColumns()
column 开始,移除 count 列从 parent 模型,
如果成功移除返回 true
也看 removeRows()
 
Bool QSqlTableModel::removeRows(int row,int count,cosnt QModelIndex&parent=QModelIndex())      [virtual]
重载从 QAbstractItemModel::removeRows()
row 开始,移除 count 行。因为该模型不支持父子模型,所以 parent 必须是一个无效的值
在一个信号被删除之前,发出 beforeDelete() 信号。当编辑策略是 OnManualSubmit ,信号发出被推迟直到 submitAll() 被调用。
如果所有行能被移除,返回真。
 
Void QSqlTableModel::revert()[virtual slot]
重载从 QAbstractItemModel::revert()
重载通道被项目代表调用,当用户取消编辑目前的行。
如果模型的策略被设置为 OnRowChange 恢复改变。其他的策略,什么也不做。
对于 OnManualSubmit 使用 revertAll() 来恢复所有未决的改变,或者 revertRow() 来恢复一个特别的行。
也看 submit().submitAll().revertRow().revertAll()
 
Void QSqlTableModel::revertAll()  [slot]
恢复所有未决的改变。
 
Void QSqlTableModel::revertRow(int row)    [virtual]
恢复 row 所有的改变
 
Int QSqlTableModel::rowCount(const QModelIndex&parent=QModelIndex())const [virtual]
重载 QAbstractItemModel::rowCount()
Int QAbstractItemModel::rowCount(cosnt QModelIndex &parent=QModelIndex())cosnt[pure virtual]
返回 parent 的行数。当 parent 是有效的,它意味着 rowCount 将返回 parent 的子项数。
注意:当执行一个基于模型的表, rowCount() 应该返回 0 parent 是有效地。
也看 columnCount()
 
Bool QSqlTableModel::select() [virtual]
用表中的数据产生模型,使用 setTable(), 用特别的过滤器和排序情况,如果成功返回真,否则返回假。
也看 setTable(),setFilter(),selectStatement()
 
QString QSqlTableModel::selectStatement()const [virtual protected]
返回用来产生模型的 sql 查询语句。语句包括过滤器和 order by clause
也看 filter() orderByClause()
 
Bool QSqlTableModel::setData(const QModelIndex &index,const QVariant&value,int role=Qt::EditRole)[virtual]
重载从 QAbstractItemModel::setData()
index role 设置数据值。依赖编辑策略,该值可能被马上应用到数据库或者被缓存在模型中
如果值能够被设置,返回真,否则返回 false
也看 editStrategy(),data(),submitAll(),revertRow()
 
Void QSqlTableModel::setEditStrategy(EditStrategy strategy) [virtual]
设置策略为编辑数据库里的值
这将恢复任何未决的改变
也看 editStrategy(),revertAll()
 
Void QSqlTableModel::setFilter(const QString&filter) [virtual]
设置过滤器到 filter
过滤器是一个 sql where 语句,没有关键词 where (例如 name=’joke’
如果模型已经产生,那么模型会重新根据过滤器产生新的。否则,过滤器将被应用到下一个 select() 被调用。
也看 filter(),select(),selectStatement(),orderByClause()
 
Void QSqlTableModel::setPrimaryKey(const QSqlIndex&key) [protected]
受保护的方法,它允许子类来设置主键。
正常的,主索引被自动设置,当你调用 setTable()
也看 primaryKey() QSqlDatabase::primaryIndex()
 
Void QSqlTableModel::setQuery(const QSqlQuery&query)[protected]
这个函数简单的调用 QSqlQueryModel::setQuery(query) 。正常情况下,你不应该在 QSqlTableModel 上调用它。应该用 setTable(),setSort(),setFilter() 等等。
也看 selectStatement()
 
Bool QSqlTableModel::setRecord(int row,const QSqlRecord&record)
row 设置值给 record 。如果值能够被设定返回真,否则返回假。
也看 record()
 
Void QSqlTableModel::setTable(const QString&tableName)[virtual]
设置表,表明为 tablename 。不从表中选择数据,但是获得它的域信息。
用表中的数据产生 model ,叫做 select ()
错误信息能被获得用 lastError()
也看 select(),setFilter(),lastError()
 
Void QSqlTableModel::sort(int column,Qt::SortOrder order) [virtual]
重载从 QAbstractItemModel::sort()
根据 order 按照列排列数据。这将立即选择数据,用 setSort() 来设置顺序而不用数据产生模型。
也看 setSort(),select(),orderByClause()
 
Bool QSqlTableModel::submit() [virtual]
重载 QAbstractItemModel::submit()
这个重载槽被项目代表调用,当用户停止编辑目前的行。
提交目前的编辑行,如果模型的策略是 OnRowChange OnFieldChange 。对于 OnManualSubmit 什么也不做。
submitAll() 来提交所有未决的改变,对于 OnManualSubmit
 
Bool QSqlTableModel::submitAll()  [slot]
提交所有的未决的改变,成功返回真。
成功模型将被重建。任何与之有关的视图将失去他们的选择。
注意:在 OnManualSubmit ,当 submitAll() 失败时,提交的改变不会从缓存里被删除。这允许重新提交而不丢失数据。
 
QString QSqlTableModel::tableName()const
返回目前被选择的表的名字
 
Bool QSqltableModel::updateRowInTable(int row,cosnt QSqlRecord&values)[virtual protected]
根据 values, 在目前活动的数据表中更新被给的行。如果成功返回 true
这是一个低层次的直接操作数据库的方法,不应该被直接调用。用 setData() 来更新值。这个模型将决定依赖他的编辑策略,当更改数据库时。
注意:只有那些有生成标志的 values 被更新。生成标志能被设置用 QSqlReord::setGenerated() 和测试用 QSqlRecord::isGenerated()

你可能感兴趣的:(数据库,职场,qt,休闲)