QTableView视图不显示任何内容

QTableView view displays nothing

本文关键字:任何内 显示 视图 QTableView      更新时间:2023-10-16

我使用Qt中的SQLite,似乎无法使从其中一个示例派生的代码正常工作。我的QTableView不显示任何内容,即使它的model决不是空的:

QSqlTableModel model;
initializeDeliveryModel(&model);
QTableView *view = new QTableView;
view->setModel(&model);
//view->setItemDelegate(new QSqlRelationalDelegate(view));
view->setWindowTitle(QObject::tr("Delivery Table"));
view->show();

型号初始化代码:

static void initializeDeliveryModel(QSqlTableModel *model)
{
    model->setTable("DELIVERY");
    int t = model->columnCount(); //6
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->setHeaderData(0,
                         Qt::Horizontal,
                         QObject::tr("ID"));
    model->setHeaderData(1,
                         Qt::Horizontal,
                         QObject::tr("Number"));
    model->setHeaderData(2,
                         Qt::Horizontal,
                         QObject::tr("Complection"));
    model->setHeaderData(3,
                         Qt::Horizontal,
                         QObject::tr("Has Arrived"));
    model->setHeaderData(4,
                         Qt::Horizontal,
                         QObject::tr("Dealer"));
    model->setHeaderData(5,
                         Qt::Horizontal,
                         QObject::tr("Price"));
    if (!model->select())
    {
        QSqlError err = model->lastError();
        QMessageBox::information(0,
                                 qApp->tr("Failed to select data from table"),
                                 err.text(),
                                 QMessageBox::Ok);
    }
    t = model->rowCount(); // 18 on the last debug
}

我在这里错过了什么?为什么不显示列和行?

附录。QTableView对象是从我的主窗体的按钮点击处理程序内部创建的。当我从示例中原样复制代码(并将代码从主窗体放入处理程序)时,结果是一样的:没有显示标题或行。

您是否将QTableView添加到相应的表单布局中?

您似乎没有同时初始化模型。如果在与视图关联后初始化模型,则您有责任调用QAbstractItemView::update()。传递默认的QModelIndex可能会起作用。

我对这个问题的解决方案是,假设您的QTableView小部件已正确创建,模型数据已设置,并且它在GUI中显示为一个空框。您需要致电:

    emit layoutChanged();

在将数据设置为模型之后。该表应在此之后填充。