QSqlTableModel Class该类为单个数据表提供一种可编辑的数据模型。
#include <QSqlTableModel>
继承QSqlQueryModel
个公共函数继承从QAbstractTableModel
35公共槽
virtual void revert()
void revertAll()
virtual bool submit()
bool submitAll()
2信号:
void beforeDelete(int row)
void beforeInsert(QSqlRecord&record)
void beforeUpdate(int row,QSqlRecord&record)
void primeInsert(int row,QSqlRecord&record)
18受保护的函数
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个受保护的函数继承从QObject
个特性继承从QObject
5上的,能够被用来提供数据给视图类,例如QTableView这个表
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0); //我们设置SQL也能被用来程序化地进入数据库,不绑定到一个VIEW.
QSqlTableModel model;
Model.setTable(“employee”);
QString name = model.record(4).value(“name”).toString();
,提取工资域。
修改分类顺序。最后,你必须调用select()作为QTableView和QSqlRelatinalDelegate和Cached Table Example.
这个enum
在一行的改变将在用户选择另一行时被应用
QSqlTableModel::OnManulSubmit 2 注意:为阻止只是部分初始化的行插入数据库,对于新插入的行,OnFieldChange也看setEditStrategy()
创建一个空的QSqlTableModel
。如果db
毁掉对象并释放所有被分配的资源
void QSqlTableModel::beforeDelete(int row) [signal]
这个信号在某行被插入到目前活动的数据表时,被insertRowIntoTable()这个信号在某行被更新之前,从updateRowInTable()设置,并且用QSqlRecord::isGenerated()重载从QSqlQueryModel::clear()
Void QSqlQueryModel::clear() [virtual]
也看setData()
QVariant QAbstractItemModel::data(const QModelIndex&index,int role=Qt::DisplayRole)const [pure virtual]
确定。
也看Qt::ItemDataRole,setData()删除被给的行从目前的数据表。
删除值。当更改数据库时,这个模型将决定依赖他的编辑策略。
和removeRow()
EditStrategy QSqltableModel::editStrategy() const
所指的域的index
QString QSqlTableModel::filter() const
返回index
)并允许它被选择(ItemIsSelectable)
QVariant QSqlTableModel::headerData(int section,Qt::Orientation orientation,int role=Qt::DisplayRole)cosnt [virtual]
在标题的哪个section,对于水平的标题,section也看 Qt::ItemDataRole,setHeaderData()在数据库的index是对应相同的
不指向结果集中的一个值,将返回一个无效的index
和setRecord()
和removeRows()
Bool QSqlTableModel::insertRowIntoTable(const QSqlRecord&values) [virtual protected]
和setData()
找到
插入const必须是无效的,因为这个模型不支持父子关系
更新策略时
primeInsert()也看primeInsert()的值是dirty值指该值被修改但是没有被写入数据库
按照目前的排序规则返回一个sql
为目前的表返回逐渐。如果表没有被设置或者没有主键将返回一个空的QSqlIndex
发出,当一个插入操作被初始化。Record从column模型,
重载从QAbstractItemModel::removeRows()
行。因为该模型不支持父子模型,所以parent信号。当编辑策略是OnManualSubmit如果所有行能被移除,返回真。
Void QSqlTableModel::revert()[virtual slot]
如果模型的策略被设置为OnRowChange使用revertAll()也看submit().submitAll().revertRow().revertAll()
Void QSqlTableModel::revertAll() [slot]
所有的改变
Int QSqlTableModel::rowCount(const QModelIndex&parent=QModelIndex())const [virtual]
的行数。当parent的子项数。
当parent用表中的数据产生模型,使用setTable(),返回用来产生模型的sql和orderByClause()
Bool QSqlTableModel::setData(const QModelIndex &index,const QVariant&value,int role=Qt::EditRole)[virtual]
,role也看editStrategy(),data(),submitAll(),revertRow()
Void QSqlTableModel::setEditStrategy(EditStrategy strategy) [virtual]
也看editStrategy(),revertAll()
Void QSqlTableModel::setFilter(const QString&filter) [virtual]
的where)
也看filter(),select(),selectStatement(),orderByClause()
Void QSqlTableModel::setPrimaryKey(const QSqlIndex&key) [protected]
也看primaryKey()
。正常情况下,你不应该在QSqlTableModel
也看selectStatement()
Bool QSqlTableModel::setRecord(int row,const QSqlRecord&record)
。如果值能够被设定返回真,否则返回假。
。不从表中选择数据,但是获得它的域信息。
()
重载从QAbstractItemModel::sort()
来设置顺序而不用数据产生模型。
这个重载槽被项目代表调用,当用户停止编辑目前的行。
。对于OnManualSubmit来提交所有未决的改变,对于OnManualSubmit
Bool QSqlTableModel::submitAll() [slot]
注意:在OnManualSubmit
返回目前被选择的表的名字
Bool QSqltableModel::updateRowInTable(int row,cosnt QSqlRecord&values)[virtual protected]
这是一个低层次的直接操作数据库的方法,不应该被直接调用。用setData()被更新。生成标志能被设置用QSqlReord::setGenerated()<span times="" new="" roman';="" mso-hansi-font-family:="" 'times="" roman'"="" style="padding: 0px; margin: 0px; font-family: 宋体;">和测试用QSqlRecord::isGenerated()