我有若干列一个QTreeWidget,我添加QTreeWidgetItems到它。我试图使第二列包含每个Item的数值,所以我可以由这个值对项目进行排序

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

我无法找到这个role说法就是任何文件。我所知道的是,如果我将其设置为1或2,东西说明了在列,如果将它设置为0或> = 3,没有在列显示了,不管了,数字总是最终被按字母顺序排序,这是不对的。

有帮助吗?

解决方案

您可以使用的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的:: ItemDataRole (通过化QAbstractItemModel ::使用setData 找到) 。角色是用来指定你所传递的数据应该用于。可以使用不同的角色来设置的项目的工具提示,字体或颜色,等等。

请注意item->text()是一个方便相当于item->data(Qt::DisplayRole).toString()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top