如何在SQLite表更新期间刷新QTableView
How to refresh QTableView during SQLite table update?
我使用C++/Qt 4.8、Microsoft Visual Studio 2010、SQLite 3.8.1。我的GUI应用程序包含几个线程:默认的GUI线程、主线程和一些工作线程。主线程处理工作线程。工作程序发出信号,要求主程序更新SQLite数据库中表的一些单元格。因此,有2个数据库连接:1个用于GUI线程,QTableView
,QSqlTableModel
子线程,1个用于主线程。Master发出信号,要求GUI线程更新QTableView
。考虑到SQLite行计数问题(需要canFetchMore()),应该如何更新QTableView
?我不希望update_slot()是计算密集型的。主线程只生成"UPDATE表"查询。我应该在没有SQL的情况下更新表以发出dataChanged
信号吗?我已经读到QSqlTableModel
是QSqlQuery
的高级替代方案,用于导航和修改单个SQL表。它通常会导致更少的代码,并且不需要SQL语法知识
我遇到过这样的代码来更新QTableView(SQLite无法直接获取行数):
m_result_table_model->select();
while(m_result_table_model->canFetchMore())
{
m_result_table_model->fetchMore();
}
是否应该在每次行更新后调用此代码?当我在update_slot()
中使用QCoreApplication::processEvents();
时,我得到了堆栈溢出异常。
无法强制QSqlQueryModel刷新某些行。您只能清除它,然后按照所述重新填充新数据。如果这还不够快,您应该手动实现此行为。选项是创建自己的模型类、子类QSqlTableModel或使用QStandardItemModel。
相关文章:
- QTableView:endMoveRows在模型中重置水平页眉大小
- 将QIcon添加到QTableView单元格
- 是否可以配置提升日志刷新?
- 如何在qt中同步应用程序和显示器的刷新率?
- 如何在QTableView中排序和更改日期格式
- QTableview Search
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- std::endl,在 Python 中是否有等价物?(返回 + 刷新)
- QTableView 拉伸标头,但保持交互性
- 在 directx11 代码中更改全屏模式下的刷新率不起作用
- qtableView 在订购项目到达时添加和显示它们任意?
- 如何在 Windows 中立即刷新文件夹图标
- QTableView 不会更新数据
- 将自定义样式添加到 QTableview 中添加的按钮
- QTableView:即时更改行计数
- 刷新来自Qpid质子连接的所有消息而不是等待?
- 如何在SQLite表更新期间刷新QTableView
- QTableView 不刷新外键
- 在QTableView中用作编辑器的QComboBox中刷新选项
- QTableView垂直调整未刷新的数据大小