Seite 1 von 1

QDialog & CloseEvent

Verfasst: 23. Juni 2006 08:29
von joschika77
Hi!

Wie kann ich den Klick auf das rote Kreuz zum Schließen abfangen?
Hab hier im Forum schon gesucht aber nichts in der Richtung gefunden.

Code: Alles auswählen

connect(this,SIGNAL(finished(int)),this,SLOT(closeDialog(int)));

void eAddressMasterData::closeDialog(int aResult)
{
	//qDebug()<<"Result:"<<aResult;
	if(isChanged)
		personDataChanged();
}
So hab ich es probiert und es geht auch, aber er schließt den Dialog sofort, während er die andere Funktion noch aufruft.Das soll er nicht tun.
Wie kann ich das anders regeln?
MfG

Re: QDialog & CloseEvent

Verfasst: 23. Juni 2006 08:46
von macman
Das Stichwort steht schon im Betreff, closeEvent. In den Beispielen gibt es einige, die den closeEvent abfangen. Im Prinzip musst Du den Event überschreiben und dann akzeptieren oder ignorieren.

Verfasst: 23. Juni 2006 09:00
von joschika77
Na ich muß das ja sicherlich mit einem connect lösen.Also überschreibe ich das CloseEvent, aber was für ein Signal verwende ich dazu?

Code: Alles auswählen

connect(this,SIGNAL(???),this,SLOT(closeEvent(QCloseEvent * event))); 
Mfg

Verfasst: 23. Juni 2006 09:10
von macman
Gar keins, closeEvent ist schon mit einem Event verbunden. Einfach überschreiben, fertig.

Code: Alles auswählen

void Dialog::closeEvent(QCloseEvent *ce)
{
	if ( mySave() )
		ce->accept();
	else
		ce->ignore();
}

Verfasst: 23. Juni 2006 09:10
von joschika77
Habs jetzt hinbekommen.Man brauch ja gar kein Signal.Einfach nur die CloseEvent überschreiben, eigenen Coden einfügen & danach event->accept() aufrufen. Danke dir für die Antwort.

MfG