1
4

1 に答える 1

6

質問が垂直ヘッダー ラベルに関するものである場合、それらを変更する最も簡単な方法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。別のアプローチは、 with を使用QTableViewQAbstractItemViewてデータを保持することです。あなたが言ったように、すでに何らかの構造でデータを個別に持っているので、構造をサブクラス化QAbstractItemViewし、カスタムモデルを作成して表示することができますQTableView

于 2012-10-24T16:46:39.943 に答える