2011-12-14 212 views
1

我有从QSqlRelationalTableModel派生的类。 我使用SQLite数据库。 而我需要更改数据库文件。 我关闭旧的数据库文件,调用SetDatabaseName(“新文件的路径”)并打开新的数据库文件。 现在我只是调用select()模型,但它返回false。 如果我打电话setTable(“表”),并且只有在那之后select(),一切正常... 但是表的名字是一样的...如何在数据库连接更改后更新QSqlTableModel更改

我没有找到任何方法,允许通知模型数据库连接已更改.... 您是否知道更好的方式来通知模型?


好的。我再次回到了这个话题。

数据库更改后,我必须调用setTable()具有相同的表名来重新启动表模型。 我没有找到一个更好的办法如何重新初始化表视图,共同我打电话

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

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

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

+0

我有一个问题... 是否有可能创建和设置(设置表名......)与QSqlTableModel的数据库被打开之前, ? 现在我收到错误,即使它存在于数据库中,表“表”也没有找到... – Funt 2011-12-15 17:00:12

回答

0

那是我的错:( 有了来源,我发现在这种情况下,选择帮助()返回false。 和一个字段名在我的新数据库的表中错过一个字母:(因此,QSqlQuery用select返回的错误。表 可设置呼叫更新字段名,因此选择返回true。

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 
相关问题