如何将字符串 属性 设置为 QTreeWidgetItem?
How to set a string property to QTreeWidgetItem?
我有一个由 id 唯一标识的应用程序特定项目的列表。他们的名字显示在 QTreeWidget
中(一个项目对应一个 QTreeWidgetItem
)。我想以某种方式将相应的 ID 附加到这些 QTreeWidgetItems
以便在选择更改后我可以访问相应项目的 ID 并进行一些处理。
QTreeWidgetItem
没有继承自 QObject
所以我不能使用它的 setProperty
函数。我该怎么做?
你知道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);
只需为属性创建一些用户定义的 roles...
typedef enum {
id_1_role = Qt::UserRole,
id_2_role,
id_N_role,
} property_id_role;
然后就可以用正常的方法getting/setting关联一个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>();
我有一个由 id 唯一标识的应用程序特定项目的列表。他们的名字显示在 QTreeWidget
中(一个项目对应一个 QTreeWidgetItem
)。我想以某种方式将相应的 ID 附加到这些 QTreeWidgetItems
以便在选择更改后我可以访问相应项目的 ID 并进行一些处理。
QTreeWidgetItem
没有继承自 QObject
所以我不能使用它的 setProperty
函数。我该怎么做?
你知道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);
只需为属性创建一些用户定义的 roles...
typedef enum {
id_1_role = Qt::UserRole,
id_2_role,
id_N_role,
} property_id_role;
然后就可以用正常的方法getting/setting关联一个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>();