繁体   English   中英

如何将字符串属性设置为QTreeWidgetItem?

[英]How to set a string property to QTreeWidgetItem?

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

QTreeWidgetItem不从QObject继承,因此我无法使用其setProperty函数。 我怎么能这样做?

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

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

  id_N_role,
} property_id_role;

然后,您可以使用获取/设置与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>();

你知道QTreeWidgetItem有一个setData方法吗?

setData(int column, int role, const QVariant &value)

您可以将它与您的角色一起使用。 例如:

int your_id = 123;
ui->treeWidget->currentItem()->setData(0,Qt::UserRole,your_id);
qDebug() << ui->treeWidget->currentItem()->data(0,Qt::UserRole);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM