New*_*oon 0 qt4 qtablewidget qt4.7 qt4.8 qmodelindex
我有128个项目的结构向量.我应该将前64个项目放在第一个QTableWidget中,剩余的64个项目放到第二个QTableWidget中.必须在我的结构向量中显示"索引"数字.那些是Id号码.我使用UI设计器设计了我的ui,我尝试在那里更改QTableWidget第一行号,但它没有用.如何初始化索引以0开头的第一个tablewidget以及索引从64开始的第二个tablewidget.请帮助guyz ...在此先感谢.
我将使用快照图像清楚地解释它.!这里我有2个QTableWidgets.每个表窗口小部件的行ID都为1.第二个小部件的行ID 不应该与1.相反,它必须是65.(因为我有128个项目,前64个项目进入第一个表格,其余64个项目应放在第二个表格中).希望大家都明白我的要求.请帮我.
如果问题是关于垂直标题标签,那么更改它们的最简单方法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();
}
Run Code Online (Sandbox Code Playgroud)
QTableWidgetAPI更简单,但功能有限.例如,QAbstractItemModel::setHeaderData()没有操作,也没有重新实现QTableModel.替代方法是使用QTableViewwith QAbstractItemView来保存数据.正如您所说,您已经在某种结构中分别拥有数据,因此您可以对结构QAbstractItemView进行子类化并生成要显示的自定义模型QTableView.
| 归档时间: |
|
| 查看次数: |
4513 次 |
| 最近记录: |