2011-10-04 1 views
1

Je crée une petite application qui représente une liste de choses à faire. La liste est stockée dans un modèle cusom (dérivé de QAbstractItemModel) et est affichée dans un QTableView.Accepter les wigets modifiés avec QDataWidgetMapper

J'ai également un widget personnalisé (TaskDialog) qui est utilisé pour parcourir et modifier les tâches de la liste. Les enfants de TaskDialog sont mappés au modèle avec un QDataWidgetMMapper. Dans la boîte de dialogue des tâches, j'ai également des boutons qui permettent de parcourir toutes les tâches de ma liste de tâches (QDataWidgetMapper :: toPrevious() ...). Le problème est que si je modifie une tâche dans TaskDialog (par exemple, le nom des tâches), puis que je navigue vers une autre tâche, la nouvelle édition modifiée n'est pas définie dans le modèle. Mais si j'édite quelque chose dans le TaskDialog, changez d'abord le focus en un autre widget enfant du TaskDialog, puis appuyez sur l'un des boutons de navigation, que les modifications sont écrites dans le modèle.

Comment puis-je m'assurer que les widgets qui sont dans un mode d'édition sont acceptés et écrits dans le modèle.

J'ai également essayé l'exemple de QDataWidgetMapper de Nokia. Là, ça fonctionne parfaitement. Mais ils utilisent un QStandardItemModel.

Meilleures salutations Luke

Répondre

2

J'ai trouvé une solution: La politique de la soumettre QDataWidgetMapper doit être réglé sur QDataWidgetMapper :: ManualSubmit. Ensuite, quand je navigue vers un nouvel élément (c'est-à-dire que l'un des boutons de navigation est enfoncé), je soumets les changements avec QDataWidgetMapper :: submit().

Questions connexes