から派生したクラスがありQSqlRelationalTableModel
ます。SQLiteデータベースを使用しています。そして、データベースファイルを変更する必要があります。古いデータベースファイルを閉じ、SetDatabaseName( "新しいファイルへのパス")を呼び出して、新しいデータベースファイルを開きます。モデルに対してselect()を呼び出すだけですが、falseが返されます。そして、setTable( "table")を呼び出し、その後select()を呼び出すと、すべてが機能します...しかし、テーブルの名前は同じです...
データベース接続が変更されたことをモデルに通知できる方法が見つかりませんでした。モデルに通知するためのより良い方法を知っていますか?
Ok。もう一度このトピックに戻りました。
dbを変更した後、同じテーブル名でsetTable()を呼び出して、テーブルモデルを再開する必要があります。そして、私はテーブルビューを再開するためのより良い方法を見つけられませんでした。
pTableView->setModel(NULL);
pTableView->setModel(model);
これにより、多くの不要なコード呼び出しが生成されますが、それ以外の場合、テーブルビューはテーブルモデルの変更(列数など)を認識しません。
QSqlTableModel
再初期化するためのより良い方法が見つかりませんでしたQTableView
。いくつかのアイデア?