2010-09-27 2 views
1

En travaillant avec Qt ItemViews, le widget d'édition d'un élément peut être modifié via un QItemDelegate qui peut créer un éditeur personnalisé via createEditor. Qui est responsable de la suppression de l'instance créée par le délégué.Ce qui supprime le widget créé par un QItemDelegate personnalisé

Je ne pouvais pas trouver toute la documentation qui explique cela, si vous pointez simplement à la section appropriée qui est très bien prendre soin généralement

Répondre

5

Allright, je ne trace ce retour ...

Un widget éditeur créé par une sous-classe créée par QAbstractItemDelegate seront supprimés après avoir perdu le focus et l'ensemble de la chaîne de signal qui est documenté par délégation a été déclenchée. Il est effectivement supprimé via un appel deleteLater() dans le QAbstractItemView.

Il est le concept d'un éditeur persistant mais je ne suivre que plus loin

0

QObjects d'eux-mêmes, tant que leur parent est défini. Lorsque vous appelez createEditor() et spécifiez un parent dans le premier paramètre, le parent se chargera de le supprimer.

La documentation pertinente peut être trouvée here, en particulier, le troisième paragraphe de la description.

+0

Je sais sur la gestion de la mémoire Qt parent-enfant. Dans ce cas, cela signifierait que tous les widgets créés lorsque quelqu'un veut éditer un élément de table ne seraient nettoyés que lorsque la vue (le parent dans ce cas) serait supprimée, cela ne semble pas être une solution propre. –

+1

I comprends mieux ton inquiétude maintenant. Si c'est effectivement le comportement et beaucoup d'éléments sont édités, beaucoup d'éléments seront créés et laissés traîner. J'ai essayé de parcourir le code source pour voir ce qui pourrait se passer mais ce n'est pas un code facile à parcourir :) Une expérience pourrait cependant aider. Dans votre implémentation de createEditor, connectez un emplacement au nouveau signal d'objets destroy() avec quelques informations de cout et voyez si vous pouvez savoir quand ils sont supprimés. En outre, je suppose qu'un seul élément peut être édité à la fois, peut-être toujours retourner le même élément. Désolé, je ne pouvais pas trouver plus d'informations solides. –

+0

J'ai mis un point d'arrêt sur le destructeur et j'ai suivi ce retour, merci pour l'aide –

Questions connexes