【问题标题】:QTableView view displays nothingQTableView 视图不显示任何内容
【发布时间】:2011-05-22 23:11:49
【问题描述】:

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

【问题讨论】:

  • Dj 你把你的 QTableView 添加到相应的布局吗?
  • 没有。事实上,我单独展示了它(以便它产生自己的窗口)。创建单独的表单并在其上放置 QTableView 后,问题就消失了。
  • 你能把你所说的作为答案吗?我愿意接受,目前不可行。

标签: c++ qt sqlite


【解决方案1】:

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

【讨论】:

  • 当我这样做的时候,它应该已经填满了。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

        emit layoutChanged();
    

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

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多