QSqlQueryModel使用小结

目录

基本用法

用QSqlQueryModel::setQuery设置sql查询。
[cpp]
void QSqlQueryModel::setQuery ( const QSqlQuery & query )
void QSqlQueryModel::setQuery ( const QString & query, const QSqlDatabase & db = QSqlDatabase() )
[/cpp]
第一种重载方法要求query必须是活动的,即query已经执行过。示例:
[cpp]
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);
[/cpp]

QSqlQueryModel的动态更新

很遗憾,QSqlQueryModel无法自动更新。因为它使用的QSqlQuery在设置前就已经执行,无法再次执行。所以,需要手动更新QSqlQueryModel的数据,比如重新设置一个刚执行过没开始遍历的QSqlQuery。在查询时间不长的情况下可以用QTimer定时刷新数据。

QSqlQueryModel与QListView结合

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 )