QTableView视图不显示任何内容

时间:2011-05-22 23:11:50

标签: c++ qt sqlite

我正在使用来自Qt的{​​{3}},我似乎无法使从其中一个示例派生的代码正常工作。我的SQLite没有显示任何内容,即使其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对象是从我的主窗体的按钮单击处理程序内部创建的。当我从示例中复制代码(并将代码从main放入处理程序)时,结果相同:没有显示标题或行。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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