2012-07-06 2 views
0

Je me suis codé dans un coin de mon schéma d'abstraction des données et il en résulte que j'ai besoin de editorOpened (QModelIndex) et editorClosed (QmodelIndex) signale dans mes vues (QTableView presque exclusivement).(Qt) Comment mettre en œuvre les signaux editorOpened (index) et editorClosed (index) dans une vue

La raison en est que mes classes de données ont un comportement automatique qui doit être bloqué/désactivé pendant l'édition, puis réactivé par la suite. Au début, je pensais essayer de le faire avec des délégués personnalisés, mais j'ai rencontré des problèmes pour plusieurs raisons: l'une étant que cela semble un peu excessif d'utiliser un délégué personnalisé fournissant le même comportement pour chaque élément, dans d'autres mots il semble que cela devrait être fait pour tous les articles par la vue elle-même. Le deuxième problème étant que les délégués semblent être const ce qui m'empêche de définir un handle interne à l'objet de données dans le délégué. En regardant les méthodes d'affichage, j'ai trouvé QAbstractItemView :: edit et QAbstractItemView :: closeEditor qui seraient des candidats parfaits pour une réimplantation avec les signaux open() et closed(), mais j'ai besoin d'un index/handle pour le spécifique article en cours d'édition, que je ne pense pas pouvoir obtenir à partir de ces méthodes ...

À ce stade, je n'ai aucune idée de ce que je pourrais faire d'autre. J'apprécierais des conseils ou des indications dans la bonne direction! Merci d'avoir lu

Répondre

1

Je l'ai résolu sur mon ...

Je trouve QAbstractItemDelegate :: editorEvent qui est non-const (je ne doit pas avoir cherché aussi près que je pensais à la lecture des documents avant).

J'ai pu définir un handle interne dans le délégué personnalisé dans cette méthode, ce qui m'a permis de créer simplement un slot pour faire ce dont j'avais besoin à la fermeture, et de connecter le signal closeEditor (QWidget *, QAbstractItemDelegate :: EndEditHint) à lui.

Questions connexes