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.

Était-ce utile?

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()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top