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?









Répondre avec citation









Je vais me faire un petit code. Mais je suis quasiment sure de moi. Ce qui est sure est que l'odre de destruction des membres est dans le sens inverse de l'ordre de construction.

Partager