QTreeWidgetItem中的角色是什么?

时间:2009-07-02 19:22:15

标签: qt model-view-controller pyqt qabstractitemmodel

我有一个包含多个列的QTreeWidget,我向其添加了QTreeWidgetItems。我尝试让第二列包含每个Item的数值,以便我可以按此值对项目进行排序

QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))

我找不到关于这个role参数是什么的任何文档。我所知道的是,如果我将其设置为1或2,则列中会显示某些内容,如果我将其设置为0或> = 3,则列中不会显示任何内容,无论数字总是按字母顺序排序,这是错误的。

3 个答案:

答案 0 :(得分:8)

您可以将Qt :: UserRole用于特定于应用程序的目的。 由于此数据是QVariant,您可以创建一个QList来设置多个数据,然后将其转换为QVariant并设置数据。

以下是一个例子:

QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);

答案 1 :(得分:6)

相关文档可在Qt::ItemDataRole下找到(通过QAbstractItemModel::setData找到)。角色用于指定您传递的数据应该用于什么。您可以使用不同的角色来设置项目的工具提示,字体或颜色等。

答案 2 :(得分:4)

请注意,item->text()相当于item->data(Qt::DisplayRole).toString()