我目前正在使用QTreeWidget
来显示树中的项目。通常它是基于3列定义的。
我需要知道的是,是否有办法添加一种隐藏价值或附加属性。
目前,该树用于将文件和浏览器显示为文件浏览器。我显示文件名,大小和日期。
对于每个项目,我想定义一个id,它引用访问它的特定方式。
例如:文件toto.jpg
由文件名toto.jpg
,日期和大小定义,但我还想保存其ID。让我们说48
。
现在,当访问树时,我可以item->text == toto.jpg
然后获取id作为项目的参数。
这是我使用的功能。
QTreeWidgetItem* child = new QTreeWidgetItem();
child->setText(0, "New Folder");
child->setText(1, "--");
child->setText(2, "--");
child->setFlags(child->flags() | Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEditable);
child->setIcon(0,QIcon(":/Images/folder_pic.png"));
我有兴趣拥有child->setIndex / getIndex
或定义隐藏的第4列。在那种情况下,我可以使用
child->setText(3,id)
并隐藏第3列
任何想法或任何方法(如果我需要切换到treeview
而不是treewidget
,请告诉我们)?
答案 0 :(得分:2)
我认为您不需要定义第4列或类似的内容。我建议使用QTreeWidgetItem::setData()
函数,它允许您在树窗口小部件项中存储任何内容(QVariant)。例如:
QTreeWidgetItem* child = new QTreeWidgetItem();
child->setText(0, "New Folder");
[..]
int id = 1234;
double size = 12.34
child->setData(0, Qt::UserRole, id);
child->setData(0, Qt::UserRole + 1, size);
您还可以从树项中提取这些值:
int id = child->data(0, Qt::UserRole).toInt();
double size = child->data(0, Qt::UserRole + 1).toDouble();