Seite 1 von 1
Frage zu QEvent
Verfasst: 5. Oktober 2005 22:58
von klogg
Tut mir leid, mir ist wirklich keine bessere Überschrift eingefallen...
Ich wüsste gerne den Unterschied,
zwischen diesen beiden eigenen Eventhandlern:
Code: Alles auswählen
void MyWindow::showEvent(QShowEvent *e)
{
if (!e->spontaneous())
execConfig(); //soll vor dem Start angezeigt werden
e->accept();
}
Code: Alles auswählen
void HWEinmaleins::showEvent(QShowEvent *e)
{
if (!e->spontaneous())
execConfig();
QMainWindow::closeEvent(e);
}
Habe bisher immer den zweiten Fall programmiert.
Der erste funktioniert aber auch.
Ich hätte erwartet, dass das QShowEvent da jedoch "verloren" geht.
HENNING
Re: Frage zu QEvent
Verfasst: 6. Oktober 2005 08:04
von macman
klogg hat geschrieben:Ich hätte erwartet, dass das QShowEvent da jedoch "verloren" geht.
Damit es verloren geht, mußt Du es ignorieren.
Verfasst: 6. Oktober 2005 23:36
von klogg
Ich will ja gar nicht, dass es verloren geht *g*
Die beiden Funktionen machen scheinbar das gleiche,
ich möchte nur wissen, wo der Unterschied ist.
HENNING
Verfasst: 7. Oktober 2005 08:32
von macman
Keine Ahnung was closeEvent(e) mit deinem showEvent macht. Das wirst Du schon debuggen müssen, um es zu verstehen.
Verfasst: 7. Oktober 2005 13:27
von klogg
SCHANDE ÜBER MICH!!!
Der zweite Teil sollte eigentlich heißen:
Code: Alles auswählen
void HWEinmaleins::showEvent(QShowEvent *e)
{
if (!e->spontaneous())
execConfig();
QMainWindow::showEvent(e);
}
Mist.
Es ging mir um den Unterschied zwsichen e->accept()
und der übergabe an die Basisklasse.
HENNING
Verfasst: 7. Oktober 2005 14:03
von macman
Einmal hast Du showEvent ersetzt, einmal erweitert. Per Default wird ein showEvent akzeptiert, in der ersetzten Methode machst Du es, in der erweiterten Qt.
Verfasst: 7. Oktober 2005 14:51
von klogg
Danke, das verstehe ich.
Bedeutet das dann, dass der Aufruf von e->accept() dazu führt,
dass das Widget angezeigt wird?
Und der der Aufruf von QMainWidget::show() löst das Event aus?
Welche der beiden Möglichkeiten ist denn zu bevorzugen?
In der Dokumentation wird ja das mit dem accept() vorgeschlagen,
aber vielleicht hat die Basisklasse ja einen Handler,
der zusätzliche Dinge tut und der wird dann ja nicht aufgerufen.
HENNING
Verfasst: 7. Oktober 2005 14:57
von macman
Ja.
Ja.
Erstere, würde ich sagen.
Mir ist noch nichts dergleichen aufgefallen, hab noch nichts vermisst.
Verfasst: 7. Oktober 2005 15:50
von klogg
Vielen Dank für deine Antworten, macman.
Ich bin jetzt wieder ein bisschen schlauer.
Herr Becker, dieser Thread kann zu den Akten gelegt werden.
Auf das er eines Tages auch jemand anderen erleuchte.
HENNING