【问题标题】:Qt - How can I set QTableWidget row index starting from 64 instead of starting with 0?Qt - 如何设置从 64 开始而不是从 0 开始的 QTableWidget 行索引?
【发布时间】:2012-10-23 07:35:57
【问题描述】:

我有 128 个项目的结构向量。我应该把前 64 个项目放到第一个 QTableWidget 中,剩下的 64 个项目放到第二个 QTableWidget 中。必须显示 “index” 数字,因为它们在我的结构向量中。这些是身份证号码。我使用 UI 设计器设计了我的 ui,我尝试在那里更改 QTableWidget 第一行号,但它没有用。 如何初始化索引以 0 开头的第一个 tablewidget 和索引从 64 开始的第二个 tablewidget。请帮助 Guyz... 在此先感谢。


请帮我解决这个问题。

我会用快照图像清楚地解释它。 !这里我有 2 个 QTableWidgets。 每个表格小部件都以 Row id as 1 开头。 Second Widget 的 Row id 不应与 1 相同。 而不是 它必须是 65。 (因为我有 128 个项目,所以前 64 个项目放在第一个表中,其余 64 个项目应该放在第二个表中)。希望大家能理解我的要求。请帮我。

【问题讨论】:

    标签: qt4 qtablewidget qt4.7 qt4.8 qmodelindex


    【解决方案1】:

    如果问题是关于垂直标题标签,那么在QTableWidget 中更改它们的最简单方法是使用QTableWidget::setVerticalHeaderLabels()

    #include <QApplication>
    #include <QTableWidget>
    #include <QTableWidgetItem>
    #include <QAbstractItemModel>
    
    #define COL_NUM 2
    #define ROW_NUM 5
    
    int main(int argc, char** argv)
    {
        QApplication app(argc, argv);
    
        QTableWidget table(ROW_NUM, COL_NUM);
        QAbstractItemModel *model = table.model();
        QStringList labels;
        for (int i = 0; i < ROW_NUM; ++i) {
            /* Fill the row */
            for (int j = 0; j < COL_NUM; ++j) {
                QTableWidgetItem *item =
                    new QTableWidgetItem(QString("item %1     %2").arg(i).arg(j));
                table.setItem(i, j, item);
            }
            /* Get row's vertical header label */
            QVariant data = model->headerData(i, Qt::Vertical);
            labels << QString("%1").arg(data.toInt() + 64);
            /* Apparently, two lines above can be replaced with one below */
            // labels << QString("%1").arg(65 + i);
        }
        /* Update vertical header labels */
        table.setVerticalHeaderLabels(labels);
        table.show();
    
        return app.exec();
    }
    

    QTableWidget 的 API 更简单,但功能有限。例如,QAbstractItemModel::setHeaderData() 是无操作且未在QTableModel 中重新实现。另一种方法是使用QTableViewQAbstractItemView 来保存数据。正如您所说,您已经在某种结构中分别拥有数据,因此您可以对您的结构和QAbstractItemView 进行子类化,以生成您的自定义模型以由QTableView 显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2017-12-10
      • 2018-01-29
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多