我的课程来自QSqlRelationalTableModel
。
我使用SQLite数据库。
我需要更改数据库文件。
我关闭旧的数据库文件,调用SetDatabaseName(“新文件的路径”)并打开新的数据库文件。
现在我只是为模型调用select(),但它返回false。
如果我调用setTable(“table”)并且仅在select()之后,一切正常...
但是桌子的名字是一样的......
我没有找到任何允许通知模型数据库连接已被更改的方法.... 您知道更好的方式来通知模型吗?
确定。我再次回到这个话题。
更改db之后,我必须使用相同的表名调用setTable()来重新启动表模型。 我没有找到更好的方法来重新启动表视图,我打电话给
pTableView->setModel(NULL);
pTableView->setModel(model);
这会产生大量不必要的代码调用,但在其他情况下,表视图不知道表模型中的更改(例如列数)。
我没有找到更好的方法来重新初始化QSqlTableModel
和QTableView
。一些想法?
答案 0 :(得分: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
答案 1 :(得分:0)
那是我的错:( 在源代码的帮助下,我发现在哪些情况下select()返回false。 我的新数据库表中的一个字段名错过了一个字母:(因此,QSqlQuery与select返回错误。 setTable调用更新表的字段名,因此select返回true。