Stephan schrieb:
> Jetzt zu meine Frage:
>
1 | > QAction *action = new QAction(tr("&%1 %2")
|
2 | > .arg(i + 1).arg(locale), this);
|
3 | >
|
> Hier wird ja der neue Eintrag generiert, wer ist jetzt für das löschen
> der hier erstellten Einträge verantwortlich?
Nee, da wird eine QAction erstellt. Der Menueintrag wird implizit beim
Aufruf von QMenu::addAction() erstellt und intern von QMenu verwaltet.
> Wie ist das hier?
> Werden die Einträge gelöscht wenn ich 'SprachMenu' zerstöre?
Die Menueinträge werden beim Zerstören von SprachMenu gelöscht, die
erzeugten QAction-Objekte erst beim Zerstören von MainWindow.
Wenn man mal die Dokumentation der Basisklassen und der Grundlagen des
Frameworks anschaut (s.u.), dann findet man dort ausreichend Hinweise
darauf, wie Qt mit dem Thema "Object ownership" umgeht. Grundregel:
QObjects, die als Kinder anderer QObjects erzeugt werden (daher die
ganzen Konstruktoren der Form QClazz::QClazz(Foo f, QObject *parent =
NULL)) sind "owned objects" des Elternobjektes, d.h. ihr Lebenszyklus
ist an den des Elternobjekts gekoppelt.
> Beim Builder konnte man den CodeGuard laufen lassen, dann war man sicher
> das auch alles seine Ordnung hatte!
valgrind?
> Ich hoffe Ihr könnt mir helfen, denn in der Doku kann ich dazu nichts
> finden.
Qt Doku -> Core Features -> Object Model -> Object Trees and Object
Ownership.
Stephan