Bonjour à tous,
Après quelques recherches infructueuses sur internet et pas plus de succès sur #qt et #qt-fr sur freenode, je me permets de vous exposer mon problème en espérant que vous pourrez m'aider
Je développe une petite application qui utilise un QSqlTableModel modifié (ajout de deux colonnes supplémentaires, rien d'incroyable). J'ai également codé un QStyledItemDelegate perso qui me permet d'afficher les deux colonnes supplémentaires dans une QTableView.
Pour éditer chacune des row du modèle, j'aimerais plutôt utiliser un widget perso qui utilise un QDataWidgetMapper pour mapper les différentes sections du modèle vers des widgets. Dans un premier temps, j'avais directement mappé les section vers des widgets permettant l'édition (des QLineEdit, un widget perso pour les deux colonnes ajoutées au modèle,...).
J'avais également besoin d'une possibilité d'afficher simplement les données sans permettre l'édition et je m'étais dit qu'il me suffirait d'utiliser setEnabled pour désactiver les widget. Mais après y avoir repensé cette solution de me satisfait pas et je préfèrerais obtenir avec QDataWidgetMapper un comportement identique à celui qu'on peut avoir dans une QTableView (c'est-à-dire remplacer le QLabel utilisé pour afficher les données par un QWidget permettant de les éditer.
J'ai donc pensé qu'il me suffirait de remplacer les widget d'édition par des QLabel (ça, ça fonctionne) pour l'affichage et à changer le delegate pour permettre l'édition.
1) Malheureusement, je ne comprends pas comment je dois faire pour appeler QStyledItemDelegate::createEditor() suite à un évenement (je voudrais créer les editor pour toutes les sections en une fois, suite au clic sur un bouton "Édition"). Comment faire ?
2) Est-ce seulement possible ou vais-je devoir faire dériver le widget, utilisant QDataWidgetMapper, de QAbstractItemView (et donc ne plus utiliser le QDataWidgetMapper) ?
Merci d'avance pour vos réponses !
@micalement,
ixM`
Partager