我有派生自 QSqlRelationalTableModel
的类。
我使用 SQLite 数据库。
我需要更改数据库文件。
我关闭旧的数据库文件,调用 SetDatabaseName("path to new file") 并打开新的数据库文件。
现在我只是为模型调用 select(),但它返回 false。
如果我调用 setTable("table") 并且仅在该 select() 之后,一切正常......
但是表名是一样的...
我没有找到任何方法可以通知模型数据库连接已更改.... 您知道通知模型的更好方法吗?
好的。我又回到了这个话题。
更改数据库后,我必须使用相同的表名调用 setTable() 以重新初始化表模型。 而且我没有找到更好的方法来重新初始化 TableView ,我调用
pTableView->setModel(NULL);
pTableView->setModel(model);
这会产生很多不必要的代码调用,但在其他情况下 TableView 并不知道表模型的变化(例如列数)。
我没有找到更好的方法来重新初始化 QSqlTableModel
和 QTableView
。一些想法?
最佳答案
// 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/