【问题标题】:QSqlDatabase and QTableView do not sync( SQLite)QSqlDatabase 和 QTableView 不同步(SQLite)
【发布时间】:2015-01-25 22:29:36
【问题描述】:

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

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

我在这里做错了什么?

【问题讨论】:

标签: sql qt sqlite pyqt pyside


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 2014-08-25
    • 1970-01-01
    相关资源
    最近更新 更多