问问题
5575 次
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()
is 没有操作,也没有在QTableModel
. 另一种方法是使用QTableView
withQAbstractItemView
来保存数据。正如您所说,您已经在某种结构中单独拥有数据,因此您可以对您的结构进行子类化并QAbstractItemView
生成要显示的自定义模型QTableView
。
于 2012-10-24T16:46:39.943 回答