我有一个包含多个列的QTreeWidget
,我在其中添加了QTreeWidgetItems
。我尝试让第二列包含每个Item
的数值,这样我就可以按这个值对条目进行排序
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
我找不到任何关于这个role
参数是什么的文档。我所知道的是,如果我将它设置为1或2,列中会显示一些东西,如果我将它设置为0或>=3,列中不会显示任何东西,无论如何,数字总是按字母顺序排序,这是错误的。
发布于 2009-07-03 11:03:10
您可以将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-02 20:04:17
相关文档可以在Qt::ItemDataRole (通过QAbstractItemModel::setData找到)下找到。角色用于指定要传递的数据的用途。您可以使用不同的角色来设置工具提示、项目的字体或颜色等。
发布于 2009-11-15 14:29:46
请注意,item->text()
相当于item->data(Qt::DisplayRole).toString()
的便利性
https://stackoverflow.com/questions/1076208
复制相似问题