Frage zu QEvent

Alles rund um die Programmierung mit Qt
Antworten
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Frage zu QEvent

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Frage zu QEvent

Beitrag 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.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Keine Ahnung was closeEvent(e) mit deinem showEvent macht. Das wirst Du schon debuggen müssen, um es zu verstehen.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

SCHANDE ÜBER MICH!!! :oops:

Der zweite Teil sollte eigentlich heißen:

Code: Alles auswählen

void HWEinmaleins::showEvent(QShowEvent *e)
{
  if (!e->spontaneous())
    execConfig();

  QMainWindow::showEvent(e);
}
Mist. :roll:

Es ging mir um den Unterschied zwsichen e->accept()
und der übergabe an die Basisklasse.

HENNING
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ja.
Ja.
Erstere, würde ich sagen.
Mir ist noch nichts dergleichen aufgefallen, hab noch nichts vermisst.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Vielen Dank für deine Antworten, macman.

Ich bin jetzt wieder ein bisschen schlauer. :lol:

Herr Becker, dieser Thread kann zu den Akten gelegt werden.
Auf das er eines Tages auch jemand anderen erleuchte.

HENNING
Antworten