[gelöst] delete für alle QObjects (und abgeleitete)

Alles rund um die Programmierung mit Qt
Antworten
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

[gelöst] delete für alle QObjects (und abgeleitete)

Beitrag von ArneStocker »

Ich hab' gleich noch 'ne Frage, bei der ich mittlerweise zu lange gesucht habe

QT verwaltet seine QObjects (und abgeleitete) im Speicher selbst (d.h. zumindest solange man einen Parent angegeben hat). Aus diesem Grunde braucht man z.B. kein Delete für einen Dialog aufrufen, den man mit new erzeugt hat.

Nun haben jedoch einige meiner Dialoge member, deren Destruktor nach dem Abmelden der Datenbank nicht mehr aufgerufen werden darf (wenn man's doch tut gibt eine Ausnahme). Aus diesem Grunde muss ich diese Dialog immer mit delete wieder rechtzeitig zerstören.

Manchmal vergesse ich das oder im Zusammenhang mit einer anderen (gefangenen) Ausnahme bleibt der Dialog im Speicher. In solchen Fällen wird buchstäblich auf den letzten Zentimetern (nämlich dann wenn QT alle seine noch vorhandenen Objekte abbaut) eine Ausnahme geworfen (was zwar nicht mehr stört aber ziemlich bescheuert aussieht).

So, jetzt meine Frage :

Kann ich Qt dazu zwingen, alle nicht mehr geöffneten Dialoge (diese sind ja von QObject abgeleitet) aus dem Speicher zu löschen. Allerdings können (z.B. bei einem Wechsel der Datenbank) noch Dialoge offen sein, die sollen natürlich nicht gelöscht werden.

Mir würde es auch genügen, wenn ich eine Liste von Pointern aller noch gültigen Dialoge erhalte, dann kann ich selber schauen, welche davon noch offen sind und welche nicht

Gruss Arne
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

manche Fragen beinhalten die Anwort -:)-

Man erhält über QApplication::queryList einen Zeiger auf eine (mit new erzeugte und mit delete zu beseitigende) QWidgetList, die alle Widgets enthält. Einfach mit den paar nicht zu löschenden Widgets abgleichen und den Rest löschen.

Gruss Arne
Antworten