首页 > 解决方案 > 如何将字符串属性设置为 QTreeWidgetItem?

问题描述

我有一个由 id 唯一标识的应用程序特定项目的列表。他们的名字显示在一个QTreeWidget(一个项目对应一个QTreeWidgetItem)。我想以某种方式将相应的 id 附加到这些QTreeWidgetItems上,以便在选择更改后我可以访问相应项目的 id 并进行一些处理。

QTreeWidgetItem不继承,QObject所以我不能使用它的setProperty功能。我怎么能这样做?

标签: c++qtqtreewidgetqtreewidgetitem

解决方案


只需为属性创建一些用户定义的角色...

typedef enum {
  id_1_role = Qt::UserRole,
  id_2_role,

  id_N_role,
} property_id_role;

然后,您可以使用常规方法获取/设置与 a 关联的数据QTreeWidgetItem

QTreeWidgetItem *item = ...

/*
 * Set the property value.
 */
item->setData(column, property_id_role::id_2_role, id_2_value);

/*
 * Get the property value.
 */
auto id_2_value = item->data(column, property_id_role::id_2_role).value<id_2_type>();

推荐阅读