gpt4 book ai didi

sql - QSqlDatabase 和 QTableView 不同步(SQLite)

转载 作者:行者123 更新时间:2023-12-03 19:41:41 25 4
gpt4 key购买 nike

我正在使用带有 QSqlDatabase 的 SQLite 数据库并使用 2 QTableView 显示数据与 QSqlTableModels .

我的应用程序使用 QSqlQuery 将数据插入表中但表格不会更新以显示新数据(例如,显示的行数没有改变)。我期待新数据会自动反射(reflect)在 QTableView 中。 .

我在这里做错了什么?

最佳答案

Qt 不支持此功能。当表被更改时,没有通知机制来自动更新模型和 View 。尽管您可以按照 here 所述的某种方式在 PostgreSQL 中进行操作。但是在 SQLite 中,您需要定期查询数据库并更新昂贵的 View 。另一种选择是使用 QFileSystemWatcher捕获文件更改并按时更新 View :

QFileSystemWatcher *databaseWatcher = new QFileSystemWatcher(this);
databaseWatcher->addPath("Path/To/database.sqlite");
QObject::connect(databaseWatcher, SIGNAL(fileChanged(QString)), this, SLOT(refreshView()));

现在它监视数据库文件,当它被外部进程或您自己更改时, fileChanged发出信号, refreshView调用插槽,您应该在其中更新模型和 View 。

关于sql - QSqlDatabase 和 QTableView 不同步(SQLite),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28142344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com