Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QSqlQueryModel类为SQL结果集的只读数据模型。More...
通过继承QSqlTableModel。
该QSqlQueryModel类为SQL结果集的只读数据模型。
QSqlQueryModel是用于执行SQL语句并遍历结果集一个高层次的接口。它是建立在较低级别的顶QSqlQuery并且可以用来提供数据可以看到类如QTableView。例如:
QSqlQueryModel *model = new QSqlQueryModel; model->setQuery("SELECT name, salary FROM employee"); model->setHeaderData(0, Qt.Horizontal, tr("Name")); model->setHeaderData(1, Qt.Horizontal, tr("Salary")); QTableView *view = new QTableView; view->setModel(model); view->show();
我们建立模型的查询,然后我们设置视图中的标题显示的标籤。
QSqlQueryModel也可以用来访问数据库编程,不绑定到一个视图:
QSqlQueryModel model; model.setQuery("SELECT * FROM employee"); int salary = model.record(4).value("salary").toInt();
上面的代码片段中提取salary从查询的结果集记录4场SELECT * from employee。假设salary是第2列,我们可以重写最后一行,如下所示:
int salary = model.data(model.index(4, 2)).toInt();
该模型是只读的默认。为了使读写,你必须继承它,并重新实现setData()和flags( ) 。另一个选项是使用QSqlTableModel,它提供了基于单个数据库表中的读 - 写的模式。
该sql/querymodel示例说明了如何使用QSqlQueryModel以显示查询的结果。它也显示了如何继承QSqlQueryModel显示给用户之前自定义数据的内容,以及如何创建基于QSqlQueryModel一个读写模式。
如果数据库没有返回在查询中选择的行数,该模型将逐步获取行。看fetchMore( )获取更多信息。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建一个空的QSqlQueryModel用给定的parent。
从重新实现QAbstractItemModel.canFetchMore( ) 。
返回True如果有可能从数据库中读取更多的行。这只会影响数据库不报到查询的尺寸(见QSqlDriver.hasFeature())。
parent应始终为无效QModelIndex。
这个函数是Qt 4.1中引入。
See also fetchMore( ) 。
清除模型,并释放任何收购资源。
从重新实现QAbstractItemModel.columnCount( ) 。
从重新实现QAbstractItemModel.data( ) 。
返回值指定item和role。
If item超出范围,或者如果发生错误,无效的QVariant返回。
See also lastError( ) 。
从重新实现QAbstractItemModel.fetchMore( ) 。
获取从数据库中多个行。这只会影响数据库不报到查询的尺寸(见QSqlDriver.hasFeature())。
要强制整个结果集的抓取,你可以使用以下命令:
while (myModel->canFetchMore()) myModel->fetchMore();
parent应始终为无效QModelIndex。
这个函数是Qt 4.1中引入。
See also canFetchMore( ) 。
从重新实现QAbstractItemModel.headerData( ) 。
返回头数据为给定的role在section用指定的标头orientation。
See also setHeaderData( ) 。
返回在给定的数据库中的结果集的值的索引item在模型中。
返回值是相同的item如果已经插入任何行或列,删除或移动了。
返回一个无效的模型索引,如果item超出范围或item不指向结果集中的值。
See also QSqlTableModel.indexInQuery( )insertColumns()和removeColumns( ) 。
从重新实现QAbstractItemModel.insertColumns( ) 。
Inserts count列到模型的位置column。该parent参数必须始终是一个无效的QModelIndex,因为该模型不支持父子关系。
返回True如果column是在一定范围内,否则返回False 。
默认情况下,插入的列是空的。为了填补他们的数据,重新实现data( )并单独处理任何插入的列:
QVariant MyModel.data(const QModelIndex &item, int role) const { if (item.column() == m_specialColumnNo) { // handle column separately } return QSqlQueryModel.data(item, role); }
See also removeColumns( ) 。
返回有关数据库上发生的最后一个错误信息。
See also setLastError()和query( ) 。
返回QSqlQuery与此模型相关。
See also setQuery( ) 。
这个虚函数被调用时查询改变。默认实现不执行任何操作。
query( )返回新的查询。
See also query()和setQuery( ) 。
返回有关当前查询的字段包含记录信息。如果row是一个有效的行的索引,该记录将被填入该行的值。
如果模型没有被初始化,一个空的记录将被退回。
See also QSqlRecord.isEmpty( ) 。
这是一个重载函数。
返回有关当前查询的字段为空的记录包含的信息。
如果模型没有被初始化,一个空的记录将被退回。
See also QSqlRecord.isEmpty( ) 。
从重新实现QAbstractItemModel.removeColumns( ) 。
移除count从模型中的列从位置开始column。该parent参数必须始终是一个无效的QModelIndex,因为该模型不支持父子关系。
删除列有效地隐藏它们。它不影响相关QSqlQuery。
返回True如果被删除的列,否则返回False 。
从重新实现QAbstractItemModel.rowCount( ) 。
如果数据库支持返回查询的尺寸(见QSqlDriver.hasFeature())时,返回的行的当前查询的数量。否则,将返回客户端上当前缓存的行数。
parent应始终为无效QModelIndex。
这个函数是Qt 4.1中引入。
See also canFetchMore()和QSqlDriver.hasFeature( ) 。
从重新实现QAbstractItemModel.setHeaderData( ) 。
设置的标题指定一个水平标题role至value。如果模型被用来在一个视图中显示的数据(例如这是有用的,QTableView) 。
返回True如果orientation is Qt.Horizontal和section指的是一个有效的部分,否则返回False 。
注意,该功能不能用于在数据库中的修改值,因为该模型是只读的。
See also headerData()和data( ) 。
保护功能,允许派生类对设置在数据库上发生的最后一个错误的值error。
See also lastError( ) 。
重置模型,并将数据提供给被给定的query。请注意,查询必须处于活动状态,且不能是isForwardOnly ( ) 。
lastError( )可以用来获取详细信息,如果有错误设置查询。
Note:调用setQuery ( )将删除任何插入的列。
See also query( )QSqlQuery.isActive( )QSqlQuery.setForwardOnly()和lastError( ) 。
这是一个重载函数。
执行查询query对于给定的数据库连接db。如果没有指定的数据库(或无效的数据库) ,则使用默认连接。
lastError( )可以用来获取详细信息,如果有错误设置查询。
例如:
QSqlQueryModel model; model.setQuery("select * from MyTable"); if (model.lastError().isValid()) qDebug() << model.lastError();
See also query( )queryChange()和lastError( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |