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

Alles rund um die Programmierung mit Qt
Antworten
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

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

Beitrag 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
Zuletzt geändert von kater am 14. Januar 2010 18:23, insgesamt 1-mal geändert.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
}
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

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