Ich habe ein QMainWindow, hier erzeuge ich z.B. zwei Widgets (abgeleitete Widget-Klassen).
Widget 1 soll bei Bedarf als CentralWidget angezeigt werden und wenn nicht, wird das ganze Widget gelöscht (es ist für die Anwendung wichtig, dass das Widget nicht nur unsichtbar wird).
Widget 2 ist ein Logger, diesen übergebe ich als Zeiger an den Kontruktor von Widget 1, denn der Logger soll innerhalb von Widget 1 angezeigt werden. Ziel ist es, den Logger und seinen Inhalt unverändert zu lassen und wieder anzuzeigen, wenn das Widget 1 wieder neu erzeugt wird.
Irgendwie kommt da aber nur Mist raus, sobald ich mehrmals Widget 1 erstelle und dann lösche. Wenn ich aber vor jedem neuen Erzeugen von Widget 1 auch den Logger (Widget 2) neu erzeuge, dann geht es.
Verstehe ich etwas falsch? Wenn Widget 1 mit delete gelöscht wird, sollte doch eigentlich nur der Zeiger auf mein Logger-Widget gelöscht werden und nicht das Objekt selbst, oder? Und wie könnte ich das umgehen?
Hier nochmal in Form von Pseudocode:
Das geht nicht:
Code: Alles auswählen
// In Klasse QMainWindow
QWidget2 *qwidget2 = new QWidget2(this);
QWidget1 *qwidget1 = new QWidget1(qwidget2, this); // Das geht
delete qwidget1;
QWidget1 *qwidget1 = new QWidget1(qwidget2, this); // Hier kommt Mist rausCode: Alles auswählen
// In Klasse QMainWindow
QWidget2 *qwidget2 = new QWidget2(this);
QWidget1 *qwidget1 = new QWidget1(qwidget2, this); // Das geht
delete qwidget1;
QWidget2 *qwidget2 = new QWidget2(this);
QWidget1 *qwidget1 = new QWidget1(qwidget2, this); // geht auch, aber widget2 verliert seinen Inhalt