c++ - 更改数据库连接后如何更新 QSqlTableModel

标签 c++ database qt model-view qabstracttablemodel

我有派生自 QSqlRelationalTableModel 的类。 我使用 SQLite 数据库。 我需要更改数据库文件。 我关闭旧的数据库文件,调用 SetDatabaseName("path to new file") 并打开新的数据库文件。 现在我只是为模型调用 select(),但它返回 false。 如果我调用 setTable("table") 并且仅在该 select() 之后,一切正常...... 但是表名是一样的...

我没有找到任何方法可以通知模型数据库连接已更改.... 您知道通知模型的更好方法吗?


好的。我又回到了这个话题。

更改数据库后,我必须使用相同的表名调用 setTable() 以重新初始化表模型。 而且我没有找到更好的方法来重新初始化 TableView ,我调用

pTableView->setModel(NULL);
pTableView->setModel(model);

这会产生很多不必要的代码调用,但在其他情况下 TableView 并不知道表模型的变化(例如列数)。

我没有找到更好的方法来重新初始化 QSqlTableModelQTableView。一些想法?

最佳答案

// create your model(parent=0, QSqlDatabase::database());
// set your table model->setTable("tablename");
tableview->setModel(this->model)
bool ok = model->select() // model should populate itself and refresh tableView as well

关于c++ - 更改数据库连接后如何更新 QSqlTableModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508363/

相关文章:

C++ 在映射中创建函数指针 vector

php - 修改一个帖子报错,简单的php编辑表单

qt - 如何正确实现重叠放置目标?

c++ - 关于 C 宏无效预处理标记的错误

xcode - MACOSX El Capitan 上的 qt-everywhere-opensource-src-5.5.1 安装

c++ - 链接 : fatal error LNK1248: image size exceeds maximum allowable size (80000000)

c++ - 是否可以包装 C 风格的回调,以便您可以将 C++ lambda 与它们一起使用?

c++ - 在 Eigen 中填充稀疏矩阵非常慢

php - 复杂的 MySQL 查询、联合、交叉或自然连接?

java - 在 Java 中序列化可从 Python 读取的数组的好方法?