- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 C++/Qt 4.8、Microsoft Visual Studio 2010、SQLite 3.8.1。我的 GUI 应用程序包含多个线程:默认 GUI 线程、主线程、一些工作线程。主线程处理工作线程。 worker 发出信号,要求主人更新 SQLite 数据库中表格的某些单元格。因此,有 2 个数据库连接:1 个用于 GUI 线程,QTableView
,QSqlTableModel
后代,1 个用于主线程。 Master 发出信号,要求 GUI 线程更新 QTableView
。考虑到 SQLite 行数问题(需要 canFetchMore()),应该如何更新 QTableView
?我不希望 update_slot() 是计算密集型的。主线程只生成“更新表”查询。我应该在没有 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。
关于c++ - 如何在 SQLite 表更新期间刷新 QTableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20871619/
我是一名优秀的程序员,十分优秀!