QTreeWidgetItem中的角色是什么?

8

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

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

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

3个回答

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);

你不仅限于使用Qt:UserRole - 它只是您可以用于自己目的的第一个。 您可以轻松存储多个值,而无需发明新的数据类型。 - pi3

8

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


4
请注意,item->text()是一个方便的等同于item->data(Qt::DisplayRole).toString()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接