Seite 1 von 1

Signal beim schließen eines Widget? Alternatvien? [solved]

Verfasst: 16. März 2009 14:28
von curator
Hallo,

ich habe von QWidget erfolgreich eine eigene Klasse abgeleitet, in der auch paar Items sind und Signals zu Slots ERFOLGREICH übertragen werden.

Dieses Widget dient ner eingabe komplexer daten, es werden daten mit dem mainwindow ausgetauscht, geht auch.

Nun zum problem.

Wenn ich das Fenster schließe, will ich dem Hauptfenster signalisieren, dass ein Eingabe beendet ist.

Mein erster versuch war, einfach in den destruktor meiner Klasse so zu gestalten:

Code: Alles auswählen

TestKlasse::~TestKlasse()
{
printf("Hallo");
}
Da kommt er aber nicht an, also was ich (glaube ich) suche, ist das SIGNAL, wenn mein TestKlasse geschlossen wird (per Button wäre es klar)

Vielen Dank für jeden Tipp,

sollte ich was vergessen haben zu erwähnen, net sauer sein, sondern kurz anmerken.

Alex

Verfasst: 16. März 2009 15:36
von franzf
Was spricht dagegen, einfach nen QDialog zu nehmen, und bei nem QDialog::Accepted die Datenübernahme zu tätigen?

Verfasst: 16. März 2009 15:49
von curator
Die Richtung stimmt.

Hab jetzt n QDialog draus gemacht, und im Hauptfenster das Signal Accepted() mit nem eigenenSlot verbunden, der wieder irgendein printf macht.

Leider wird auch dieses nicht aufgerufen. Es wird keine Fehlermeldung zur Laufzeit ausgegeben, dass da etwas nicht verbunden wäre.

Löst ein schließen per " X " dieses Signal nicht aus?

Wenn nicht, welches Signal löst der aus?

Danke

Verfasst: 16. März 2009 15:51
von curator
rejected......vergesst es :-)

So geht es auf jedenfall.

Vielen Dank

Verfasst: 16. März 2009 15:59
von franzf
Eigentlich musst du das nix connecten:

Code: Alles auswählen

MyDialog dlg(this);  // Modaler dialog, MyDialog erbt von QDialog
int exitCode = dlg.exec();
if( exitCode == QDialog::Accepted ) {
    // Daten übernehmen
}

Verfasst: 17. März 2009 15:12
von curator
Hm, habs jetzt so gemacht:

Code: Alles auswählen

m_TestKlasse=new TestKlasse(this);

connect(m_TestKlasse, SIGNAL(rejected()), this, SLOT(onCmdExternClose()));
m_TestKlasse->show();
und in der onCmdExternClose reagiere ich dann entsprechend.

Ich arbeite ja in beiden Fenstern gleichzeitig.

Da eine ist n plot widget, und sobald ich das unterfenster da aufmachen, kann ich da mal meine "Malparameter" einstellen. sobald fenster zu, wieder die "normalen" parameter.