问:为什么QTableView失去了它的模型()?

时间:2017-06-19 21:24:36

标签: c++ qt

我无法找到任何可能导致此问题的事情。我在我的UI表单中定义了Buttons和TableView。

然后我这样做:

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 个答案:

答案 0 :(得分:0)

正如@drescherjm指出的那样。

我的选项卡实际上是其中的表的容器,currentWidget返回它们,而不是表本身。这可以通过将表直接放到Tabs或通过创建包含指向所需数据的指针的包装类来解决。