代码之家  ›  专栏  ›  技术社区  ›  pseudomarvin

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

  •  2
  • pseudomarvin  · 技术社区  · 6 年前

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

    qTreWistigiste 不从继承 QObject 所以我不能用它 setProperty 功能。我怎么能这样做?

    2 回复  |  直到 6 年前
        1
  •  4
  •   G.M.    6 年前

    只需创建一些用户定义的 roles 对于属性…

    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>();
    
        2
  •  3
  •   FrozenM    6 年前

    您知道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);