[löschen!]Nachschlag: Mouseevent auf QLabel begrenzen
Verfasst: 2. Januar 2009 20:32
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:
prinzipieller Aufbau meines Hauptfensters:
| | | |
| | | |
| | | |
linker Bereich: alles mit mittlerer Bereich: rechter Bereich:
Bedienelementen voll Bildausgabe auf QLabel weitere Bedienelemente,
------------- 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() << ")";
...
} | | | |
| | | |
| | | |
linker Bereich: alles mit mittlerer Bereich: rechter Bereich:
Bedienelementen voll Bildausgabe auf QLabel weitere Bedienelemente,