2017-06-19 60 views
-1

我找不到任何可能導致此問題的內容。我有我的UI形式定義的按鈕和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或通過創建包含指向所需數據的指針的包裝類來解決。

相關問題