Seite 1 von 1

[löschen!]Nachschlag: Mouseevent auf QLabel begrenzen

Verfasst: 2. Januar 2009 20:32
von qtNiko
hallo,

------------- der Text ging aus Versehen raus, ehe er fertig war, bitte löschen

der Tipp für mein bereits angesprochenes Problem war, ein eventFilter() zu verwenden. Aber der tut nicht ganz, wie ich es erwartet habe. Vielleicht habe ich auch etwas nicht richtig verstanden.

Situation: ich habe in meinem Hauptfenster ein QLabel, graphView_scene, für Bildausgaben. Außerdem habe ich mousePressEvent(..) für das Hauptfenster überschrieben mit eigenen Aktionen.

Meine Absicht: Mouseevents sollen so gefiltert werden, dass nur die Klicks im QLabel an mousePressEvent(..) weitergeleitet werden.

Realisierung:

Code: Alles auswählen

im Konstruktor meines Hauptfensters ipcSim:
...
graphView_scene->installEventFilter(this);
...

bool ipcSim::eventFilter(QObject *obj, QEvent *event)
 {
     if (obj == graphView_scene) {
         if (event->type() == QEvent::MouseButtonPress) {
        	 qDebug() << "Mousetaste ";
             return false;
         }
         else
             return true;
 
     } else {
         // pass the event on to the parent class
         return QMainWindow::eventFilter(obj, event);
     }
 }

vorläufige Version zur Visualisierung, was passiert:
void ipcSim::mousePressEvent(QMouseEvent* event) {
...
	if (event->button() == Qt::LeftButton) {
		qDebug() << "li(" << event->x() << ", " << event->y() << ")";
	else if (event->button() == Qt::RightButton) {
		qDebug() << "re(" << event->x() << ", " << event->y() << ")";
...
} 
prinzipieller Aufbau meines Hauptfensters:

| | | |
| | | |
| | | |
linker Bereich: alles mit mittlerer Bereich: rechter Bereich:
Bedienelementen voll Bildausgabe auf QLabel weitere Bedienelemente,

Verfasst: 2. Januar 2009 20:41
von upsala
Aber der tut nicht ganz, wie ich es erwartet habe
Und was tut er? Kommt die Debug-Ausgabe?