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

Alles rund um die Programmierung mit Qt
Antworten
curator
Beiträge: 26
Registriert: 15. April 2007 21:34

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

Beitrag 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
Zuletzt geändert von curator am 16. März 2009 15:55, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Was spricht dagegen, einfach nen QDialog zu nehmen, und bei nem QDialog::Accepted die Datenübernahme zu tätigen?
curator
Beiträge: 26
Registriert: 15. April 2007 21:34

Beitrag 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
curator
Beiträge: 26
Registriert: 15. April 2007 21:34

Beitrag von curator »

rejected......vergesst es :-)

So geht es auf jedenfall.

Vielen Dank
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
}
curator
Beiträge: 26
Registriert: 15. April 2007 21:34

Beitrag 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.
Antworten