Qu'est-ce qu'un rôle dans un QTreeWidgetItem?
-
21-08-2019 - |
Question
J'ai un avec plusieurs colonnes QTreeWidget
, j'ajouter à ce QTreeWidgetItems
. J'essaie de faire la deuxième colonne contient une valeur numérique pour chaque Item
donc je peux trier les éléments par cette valeur
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
Je ne peux trouver aucune documentation sur ce que ce raisonnement est role
. Tout ce que je sais est que si je l'ai mis à 1 ou 2, quelque chose apparaît dans la colonne, si je mets à 0 ou> = 3, rien n'apparaît dans la colonne, quel que soit, les chiffres finissent toujours par être classés par ordre alphabétique, ce qui est faux.
La solution
Vous pouvez utiliser Qt :: UserRole à des fins spécifiques d'application. Étant donné que ces données est un QVariant, vous pouvez créer un QList pour définir plusieurs données et après CAST à QVariant et définir les données.
Voici un exemple:
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);
Autres conseils
La documentation pertinente se trouve sous Qt :: ItemDataRole (trouvés par QAbstractItemModel :: setData ) . Les rôles sont utilisés pour spécifier ce que les données que vous transmettez doit être utilisé. Vous pouvez utiliser différents rôles pour définir l'info-bulle, la police ou la couleur d'un élément, entre autres.
Notez que la commodité est un item->text()
équivalent à item->data(Qt::DisplayRole).toString()