2 votes

Comment empêcher la suppression d'un enfant lors de deleteChildren() dans Qt ?

J'ai une interface de journalisation qui permet à l'utilisateur de sous-classer une classe Logger et remplacer le log() fonction virtuelle pour que les utilisateurs puissent créer leurs propres enregistreurs. Il existe un gestionnaire qui garde la trace de toutes les méthodes d'enregistrement enregistrées (c'est-à-dire Console, syslog, Widget, etc.).

J'ai créé un logger QListWidget qui affiche les logs. Malheureusement, il appartient au gestionnaire de logs et, comme il s'agit d'un QObject, il est également un enfant de la fenêtre principale. Il en résulte que deux objets tentent de le supprimer à la fermeture de l'application.

La première fois, le QObjects->deleteChildren() est appelé et il le supprime. Ensuite, le Loggin gmanager essaie à nouveau et CRASH.

Comment puis-je empêcher qu'un QObject spécifique soit détruit au cours d'une opération de destruction de QObject ? deleteChildren() ? Est-ce une mauvaise idée ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X