1

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

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


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

更改 db 后,我必须使用相同的表名调用 setTable() 来重新初始化表模型。而且我没有找到更好的方法来重新初始化表格视图,我称之为

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

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

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

4

2 回答 2

2
// 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
于 2013-03-28T14:44:33.263 回答
0

那是我的错 :( 借助我发现的来源,在这种情况下 select() 返回 false。并且我的新数据库表中的一个字段名丢失了一个字母:( 所以,QSqlQuery 选择返回错误。setTable 调用更新字段名表,所以选择返回真。

于 2011-12-15T08:11:46.547 回答