Question

Je veux associer des données supplémentaires à chaque QTableWidgetItem insérées dans la table, afin d'utiliser ces données à l'avenir, lorsqu'il est cliqué sur un élément de table. Mais ces données ne doivent pas être visibles. Comment puis-je faire?

Était-ce utile?

La solution

Vous pouvez utiliser QTableWidgetItem::setData() comme ceci:

setData(Qt::UserRole, myData); // set

myData est un type pris en charge QVariant . Vous pouvez utiliser QTableWidgetItem::data() pour récupérer la valeur que vous stockez.

Si vous avez besoin de plus d'un, vous pouvez utiliser Qt::UserRole + 1, + 2, et ainsi de suite (Qt::UserRole est « Le premier rôle qui peut être utilisé à des fins spécifiques à l'application. », Vous pouvez en savoir plus sur les autres types de ).

Si vous stockez un type personnalisé qui ne sont pas pris en charge en mode natif par QVariant vous devrez enregistrer votre type avec le système de méta-objet Qt. Regardez QMetaType pour plus de détails à ce sujet.

Si vous voulez stocker un nombre entier, par exemple:

QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col
int myInteger = 42;
widgetItem->setData(Qt::UserRole, myInteger);
// ...
myInteger = widgetItem->data(Qt::UserRole);

Autres conseils

Vous pouvez obtenir de QTableItem et fournir votre propre membre de données, ou vous pouvez utiliser le QTableView avec votre propre modèle.

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