【问题标题】:What is a role in a QTreeWidgetItem?QTreeWidgetItem 中的角色是什么?
【发布时间】:2010-11-07 18:04:29
【问题描述】:

我有一个带有多个列的QTreeWidget,我在其中添加了QTreeWidgetItems。我尝试使第二列包含每个 Item 的数值,以便我可以按此值对项目进行排序

QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))

我找不到关于 role 参数是什么的任何文档。我所知道的是,如果我将其设置为 1 或 2,则会在列中显示某些内容,如果将其设置为 0 或 >=3,则列中不会显示任何内容,无论如何,数字总是按字母顺序排序,这是错误的。

【问题讨论】:

    标签: qt model-view-controller pyqt qabstractitemmodel


    【解决方案1】:

    您可以将 Qt::UserRole 用于特定于应用程序的目的。 由于此数据是 QVariant,您可以创建一个 QList 来设置多个数据,然后将其转换为 QVariant 并设置数据。

    这是一个例子:

    QTreeWidgetItem* item = new QTreeWidgetItem();
    QList<QVariant> dataList;
    dataList.append("data 1");
    dataList.append("data 2");
    QVariant data(dataList);
    item->setData(0, Qt::UserRole, data);
    

    【讨论】:

    • 您不仅限于 Qt:UserRole - 它只是您可以用于您的目的的第一个。您可以轻松存储多个值,而无需发明新的数据类型。
    【解决方案2】:

    相关文档可以在Qt::ItemDataRole 下找到(通过QAbstractItemModel::setData 找到)。角色用于指定您传递的数据应用于什么用途。您可以使用不同的角色来设置项目的工具提示、字体或颜色等。

    【讨论】:

      【解决方案3】:

      请注意,item-&gt;text() 等同于item-&gt;data(Qt::DisplayRole).toString() 的便利性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多