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 ?