Hello,
J'ai pu lire ça dans la faq:
http://qt.developpez.com/faq/?page=Q...qobject-membre
"Il est très important que tous les QObject en membre d'une classe ait pour parent this."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class monObj : QObject { QTimer m_timer; public : monObj () { m_timer.setParent(this); } }
Ce qui me fait bizarre et que je ne comprends pas trop bien. Sauf erreur dans l'exemple ci dessus. L'ordre de destruction devrait être :
1) destructeur de monObj
2) destructeur de m_timer
3) destructeur de QObject
Si cela est bien correct, c'est le destructeur de QObject qui va détruire les enfants, donc entre autre m_timer mais ce dernier est déjà liquidé à ce moment-là.
Selon mon interprétation de la doc, la destruction de m_timer a pour effet de le retirer de la liste des enfants de monObj, c'est pour cela en fait que je pense que ça ne fait pas d'erreur si m_timer n'existe plus au moment ou le destructeur de QObject fait le nettoyage.
Ca me paraît confus, mais si mon analyse est correcte (ce qui reste à déterminer), on ne devrait pas appeler setParent(this) sur un QObject membre non pointeur.
Vous pouvez m'aidez à comprendre?
Partager