2011-12-14 209 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 
相關問題