7

我有QTreeWidget几个列,我添加QTreeWidgetItems到它。我尝试使第二列包含每个列的数值,Item以便我可以按此值对项目进行排序

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

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

4

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);
于 2009-07-03T11:03:09.563 回答
7

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

于 2009-07-02T20:04:16.747 回答
4

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

于 2009-11-15T06:29:45.637 回答