创建自定义模型的方式是按名称访问表中的数据吗?

时间:2011-10-31 22:32:23

标签: c++ qt qt4

假设我有一个包含10列的QTableWidget。我用

在表格中设置数据
  QTableWidgetItem* textItem1 = new QTableWidgetItem;
  textItem1->setData(Qt::DisplayRole, 20);
  this->tableWidget->setItem(row, col, textItem1);

问题是如果我使用QtDesigner更改表中列的顺序或标题,我必须通过我的代码并更改所有列号。我宁愿做这样的事情:

  QTableWidgetItem* textItem1 = new QTableWidgetItem;
  textItem1->setData(Qt::DisplayRole, "Smith");
  this->tableWidget->setLastName(row, textItem1);

添加" Smith"到"姓氏"列,无需知道LastName当前是哪个列索引。是用自定义模型执行此操作的方法吗?我查看了QAbstractTableModel,但我不明白如何提供对数据的命名访问权限?任何人都可以简单解释一下如何做到这一点?如果这是一个合理/普通的想做的事情?

感谢。

1 个答案:

答案 0 :(得分:1)

我发布了一个使用QAbstractTableModel的例子:

http://programmingexamples.net/index.php?title=Qt/ModelView/QAbstractTableModel

如您所见,数据只是存储在成员变量中,因此可以根据需要进行访问。