J'ai un QTableView connecté à un QSqlTableModel.
Dans la première colonne, il y a des dates que dans ce format: 2010-01-02
Je veux cette colonne pour afficher la date à ce format (mais sans changer les données réelles): 02.01.2010
Je sais que je dois créer un QItemDelegate pour cette colonne, mais je ne sais pas comment je peux lire les données existantes et écraser avec quelque chose de différent. Vous avez une idée de comment gérer cela?Afficher d'autres données dans QTableView avec QItemDelegate
Répondre
Un délégué d'article ne change pas nécessairement les données, il rend simplement les données. En outre, si vous utilisez Qt 4.4 ou plus récent, regardez QStyledItemDelegate à la place - il est conscient du thème et aura l'air plus agréable.
Il y a un exemple de délégués d'article dans this article (qui semble être un miroir de la documentation officielle qui est maintenant en panne ou disparue).
Depuis tout ce que vous voulez vraiment faire est de personnaliser le texte, avez-vous envisagé d'utiliser un modèle de procuration à la place et juste retourner votre QString personnalisé pour DisplayRole de la colonne de date?
La solution la plus simple est de créer une sous-classe QStyledItemDelegate
et réimplémenter displayText(...)
-à-dire
class DateFormatDelegate : public QStyledItemDelegate
{
public:
DateFormatDelegate (QString dateFormat, QObject *parent = 0) :
QStyledItemDelegate(parent),
m_dateFormat(dateFormat)
{
}
virtual QString displayText(const QVariant & value, const QLocale & locale) const
{
Q_UNUSED(locale);
return value.toDate().toString(m_dateFormat);
}
private:
QString m_dateFormat;
};
Alors à votre avis -
setItemDelegateForColumn(/*date column*/, new DateFormatDelegate("MM.dd.yyyy", this));
- 1. Mise en forme de données dans un QTableView
- 2. Utilisez QItemDelegate pour afficher les vignettes de l'image
- 3. QTableView - exemples
- 4. QTableView signal de tri?
- 5. QTableView impression
- 6. Incorporation d'un contrôle dans un QTableView?
- 7. Comment ouvrir une URL dans un QTableView
- 8. Comment désactiver le mode d'édition dans QTableView?
- 9. Création d'un menu contextuel dans Qt pour QTableView
- 10. Appel QFileDialog lors de la tentative d'édition de cellule dans QTableView
- 11. Mise à jour efficace d'un QTableView à haute vitesse
- 12. Qt: case à cocher & QItemDelegate - ne pas cocher la case lorsque la sélection se produit
- 13. Ce qui supprime le widget créé par un QItemDelegate personnalisé
- 14. Comment interagir avec les actions de case à cocher? (QTableView avec QStandardItemModel)
- 15. Force mise à jour QTableView + QSqlTableModel dans PyQt
- 16. PyQt QTableView ne pas afficher les icônes après la mise à jour de PyQt 4.5.1
- 17. Qt: Accès aux cellules d'un QTableView
- 18. Afficher les données de chargement avec délai
- 19. Qt/C++: obtention des données à une certaine cellule dans un QTableView
- 20. Afficher les données avec le contrôle adrotator
- 21. Afficher mes données dans jqGrid
- 22. PyQt: modifier l'alignement des cases à cocher dans un QTableView
- 23. Affichage de plusieurs icônes dans une seule cellule d'un QTableView
- 24. Comment déclencher le mode d'édition d'un élément dans un QTableView?
- 25. Comment implémenter des lignes gelées dans un QTableView
- 26. QTableView: comment créer correctement un QModelIndex?
- 27. Afficher les données de NSMutable Chaîne dans la table Afficher
- 28. Comment Afficher les données dans asp.net Comme www.visualthesaurus.com afficher Thesaurus
- 29. Afficher les données dans la grille
- 30. Afficher les données hiérarchiques
Soit le délégué ou le modèle proxy fonctionnerait assez bien dans cette situation. Le délégué est probablement plus proche de ce que l'intention, cependant. –
mon problème est, que je ne comprends pas comment le faire avec un QItemDelegate. the paint() - méthode ne fonctionnera pas pour moi – Berschi
Quel est, précisément, le problème avec paint()? – ChrisV