Search code examples
qtmodel-view-controllerpyqtqabstractitemmodel

What is a role in a QTreeWidgetItem?


I have a QTreeWidget with several Columns, I add QTreeWidgetItems to it. I try to make the second column contain a numerical value for each Item so I can sort the items by this value

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

I cannot find any documentation on what this role argument is. All I know is that if I set it to 1 or 2, something shows up in the column, if I set it to 0 or >=3, nothing shows up in the column, regardless, the numbers always end up being sorted alphabetically, which is wrong.


Solution

  • You can use the Qt::UserRole for application specific purposes. Since this data is a QVariant, you can create a QList to set multiple data and after that cast it to QVariant and set the data.

    Here is an example:

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