我有一个复杂的软件,它有几个表格和表格。我需要在 QSqlQueryModel 中加入一些表并将结果显示到 QTableView 我使用 QSortFilterProxyModel 能够在包含结果的 QTableView 中搜索当我创建 QTableView 并设置模型时,一切正常,但是在另一部分软件数据库变化我在QTableView中看不到数据变化。
这是一个片段代码:
void form1::setModels()
{
queryModel = new QSqlQueryModel();
queryModel->setQuery("SELECT * FROM table1");
proxyModel = new QSortFilterProxyModel(queryModel);
proxyModel->setSourceModel(queryModel);
ui->tableView->setModel(proxyModel);
}
这个方法在我创建 form1 时被调用,它被放置在数据库连接和 open() 调用下面
在我用 exec 调用 form1 之前,我尝试做一个:(form1 包含提到的 QTableView)
queryModel->query().exec()
为了更新查询,但在我关闭程序并再次运行之前什么都没有发生。
就像模型中间的东西没有正确更新
如果我在表单 exec 方法之前调用 setModels()(不仅在表单的构造函数中),QTableView 会正确显示更改,但我认为这不是进行更新的正确方法,我已经有了模型,并且tableview,我想我只需要更新查询并刷新QTableView和QSortFilterProxyModel,但我没有找到这样做的方法。