Qt – a role in a QTreeWidgetItem

model-view-controllerpyqtqabstractitemmodelqt

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.

Best 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);
Related Question