时间:2021-07-01 10:21:17 帮助过:2人阅读
第一种重载方法要求query必须是活动的,即query已经执行过。示例:
1 2 3 4 5 6 7 8 9 | QSqlQuery query(app_database_engine_->appDatabase()); query.prepare("SELECT * FROM some_table " "WHERE ID=:id "); query.bindValue(":id",an_id); query.exec(); QSqlQueryModel *file_sql_query_model = new QSqlQueryModel(this); file_sql_query_model->setQuery(query); |
很遗憾,QSqlQueryModel无法自动更新。因为它使用的QSqlQuery在设置前就已经执行,无法再次执行。所以,需要手动更新QSqlQueryModel的数据,比如重新设置一个刚执行过没开始遍历的QSqlQuery。在查询时间不长的情况下可以用QTimer定时刷新数据。
Qt的Model/View模型使用起来很方便,同一个模型可以和不同的视图继承。QSqlQueryModel最适合QTableView表格视图,不过也可以用QListView列表视图。使用QListView::setModelColumn(int column) 设置列表视图显示的列即可。QListView的属性modelColumn文档如下:
modelColumn : int
This property holds the column in the model that is visible.By default, this property contains 0, indicating that the first column in the model will be shown.
Access functions:
int modelColumn () const
void setModelColumn ( int column )
QSqlQueryModel使用小结
标签: