2017-06-19 5 views
-1

これを引き起こす可能性のあるものは見つかりません。私は自分のUIフォームでButtonsとTableViewsを定義しています。Qt - なぜQTableViewはそのモデル()を失っていますか?

それから私は実行します。

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    if (!createConnection(this)) 
     printf("%s\n", "Unable to set up database!"); 

    QSqlTableModel* model = new QSqlTableModel(this); 
    model->setTable(tableName); 
    model->setEditStrategy(QSqlTableModel::OnManualSubmit); 
    model->select(); 

    table->setModel(model); 
    // At this point both model and table->model return same thing (proper model). 
} 

しかし、その後、私は持っている:

void MainWindow::on_save_clicked() 
{ 
    QTableView* current = (QTableView*) ui->tables->currentWidget(); 
    // current table is correctly found. 
    QSqlTableModel* model = (QSqlTableModel*) current->model(); 
    // model is null 
} 

任意の手がかり?

+1

おそらく、 'ui-> tables-> currentWidget()'は 'table'と同じではありません。 – drescherjm

+0

@drescherjmくそ、objectName()は私を混乱させました(彼らは同じでした)。あなたは正しい、一つはコンテナ、もう一つはテーブル(そのコンテナ内)です。 – Ernio

答えて

0

@drescherjmが指摘しているとおりです。

私のタブは、実際にはテーブル内のテーブルのコンテナでしたが、テーブル自体ではなく、currentWidgetが返しました。これは、Tabsに直接テーブルを置くか、必要なデータへのポインタを持つラッピングクラスを作成することで修正できます。

関連する問題