Torsten Werner wrote:
Hallo Leute,
Hallo,
kürzlich habe ich mir mal ins Bein geschossen, weil die qt-Bibliothek standardmäßig alle Verweise auf andere Objekte innerhalb eines QObject automatisch im Destruktor löscht (mittels delete). Kann man dieses Verhalten auf einfache Art ändern? Die mir vorliegende Dokumentation schweigt sich darüber aus und vermutet noch nicht einmal, dass dieses Standardverhalten eigentlich völlig krank ist.
Meine Doku sagt da folgendes:
[schnipp] QObject::~QObject () [virtual] Destructs the object, deleting all its child objects.
All signals to and from the object are automatically disconnected.
Warning: All child objects are deleted. If any of these objects are on the stack or global, your program will sooner or later crash. We do not recommend holding pointers to child objects from outside the parent. If you still do, the QObject::destroyed() signal gives you an opportunity to detect when an object is destroyed. [schnapp]
Nur so ein Idee: falls du deine Child-Widgets behalten möchtest, könntest du ihnen ja vorher ein anderes Parent-Widget geben (QObject::reparent()).
BTW: Qt ist nicht das einzige GUI-Toolkit, das dieses Verhalten hat. Ich habe damit auch noch keine Probleme gehabt ...
Danke, Torste
Jens