Auf Schließen von MdiSubWindow reagieren

Alles rund um die Programmierung mit Qt
Antworten
flixtrix
Beiträge: 2
Registriert: 23. Februar 2010 13:58

Auf Schließen von MdiSubWindow reagieren

Beitrag von flixtrix »

Hallo zusammen!

Ich habe einen Konverter für Grafikdateien zusammengebastelt. Dieser hat eine MdiArea in der ich vor der Konvertierung die Grafiken jeweils als SubWindows anzeige (sozusagen eine Vorschau).Das habe ich nach dem MDI-Beispiel aufgebaut (Allerdings ohne Menüleiste). Die Dateien suche ich über einen FileDialog. Außerdem lasse ich die Pfade der gewählten Dateien noch in ein ListWidget eintragen.

Nun hätte ich gerne, dass, sobald ein MdiSubWindow vom Benutzer geschlossen wird, auch der entsprechende Eintrag aus dem ListWidget entfernt wird. Die WindowTitle haben die gleichen Namen wie die ListWidget Einträge, ich könnte also beim Schließen nach den Namen suchen und die Einträge entfernen. Allerdings komm ich nicht drauf wie man auf das Schließen eines SubWindows reagiert. Ein Signal dafür gibts ja nicht (oder?).

Ich dachte schon an QEvent, nur leider hab ich da überhaupt keine Ahnung wie das funktionieren soll.
Währe toll wenn jemand einen Tipp für mich hätte. Denn: man lernt nie aus!

Danke schon mal
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Hast du dir schon mal das signal destroyed(..) angeschaut?
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

archer hat geschrieben:Hast du dir schon mal das signal destroyed(..) angeschaut?
Das wird wahrscheinlich nicht funktionieren, da ein Widget nicht sofort nach dem Schließen zerstört wird.
Das beste wäre es wahrscheinlich wirklich, eine Klasse von QMdiSubWindow abzuleiten und dort dann einfach ein eigenes closeEvent zu definieren. Da kann dann ja ein beliebiges Signal ausgelöst werden.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn man die passenden Flags beim erstellen des Widgets übergibt, wird es auch beim schließen 'destroyed'.

Außerdem warum soll man ein eigenes closeEvent erstellen, wenn jedes Widget schon eins hat, das man abfangen kann?
flixtrix
Beiträge: 2
Registriert: 23. Februar 2010 13:58

gelöst!

Beitrag von flixtrix »

Hallo nochmal und danke für die Tipps.

Ich habs mit destroyed(QObject* ) probiert und konnte auch darauf reagieren. Allerdings hatte ich dann keinen Zugriff mehr auf den Namen des SubWindows (weil es wohl schon zerstört war, bevor ich was damit anstellen konnte). Programm ist bei dem Teil dann immer abgestürzt.

Jetzt hab ich in den Destruktor der SubKlasse ein eigenes Signal eingebaut das mir den Namen (currentFile wie in dem MDI-Beispiel) übergibt, mit dem ich dann weiterarbeiten kann; Auch wenn das Fenster bzw Widget schon zerstört ist.
Natürlich vorher bei der Erstellung der SubWindows das Signal noch mit meinem subWindowClosed Slot verbunden. Hier kann ich jetzt schön den Namen in der Liste suchen und entfernen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Event. wäre das hier was für dich: http://qt-apps.org/content/show.php/Wid ... ent=118112
Antworten