Seite 1 von 1

[gelöst] Wie Event Funktionen von QLabel überschreiben

Verfasst: 14. Januar 2010 15:10
von kater
Hallo,
ich benutzen den QtCreator und benutze ein QLabel um ein Bild anzuzeigen. Nun möchte ich die mouseMoveEvent Funktion benutzen um die Position der Maus und den Grauwert des Pixels im Bild anzuzeigen.
Normal erstellt man eine neue Klasse, lässt sie von QLabel erben und überschreib die mouseMoveEvent Funktion.

Nur habe ich ein QLabel im Form Editor, also ui->label. Wie überschreibe ich denn nun Funktionen von diesem Objekt?

Eine Alternative wäre sich ein Plugin zu schreiben und dieses im Formeditor zu plazieren. Das habe ich auch schon gemacht, nur ist eben etwas umständlich.

Gruss

Verfasst: 14. Januar 2010 15:44
von AuE
Installiere nen Eventfilter für das Label. In der eventFilter Methode bekommst dann object und event und kannst entscheiden wie du es behandelst a la

Code: Alles auswählen

if (object == meinLabel && event->type() == QEvent::MouseMove)
{
//do it
}

Verfasst: 14. Januar 2010 18:23
von kater
Ok, hab ich gemacht, funktioniert.

Um das etwas allgemeiner zu halten. Wenn ich mehre QLabels aka Bilder habe und bei verschiedenen Events verschiedene Funktionen habe müsste ich entweder mir immer eine neue Klasse bauen, ein Objekt erstellen und dann als EventFilter installieren, oder ich baue einen EventFilter der mir die Events auseinander nimmt und die jeweilige Funktion aufruft.

Ich schätze das letztere ist jetzt der wohl beste Weg? Mit weniger Aufwand geht es wohl nicht.

Verfasst: 15. Januar 2010 08:29
von AuE
Du kannst glaub auch in der GUI Klasse (da die von QWidget erbt) die Events überschreiben.
Ich löse es lieber via Eventfilter