Seite 1 von 1

QGraphicsView und QMouseEvents

Verfasst: 21. Juli 2008 16:37
von fm
Hallo,

hier habe ich eine Anwendung, die drei QGraphicsScenes in vier QGraphicsViews darstellt. Ein QGraphicsView ist größer als die anderen. Die kleineren dienen zur Vorschau und je nach Auswahl einer Vorschau stelle ich die entsprechende QGraphicsScene im großen QGraphicsView dar.

Nun würde ich die Auswahl der QGraphicsScene gerne so realisieren, dass ich einfach die entsprechende Vorschau anklicke. Wie lässt sich dies am einfachsten umsetzen? Kann ich die QMouseEvents direkt in meiner von QMainWindow abgeleiteten Klasse auswerten? Dort kommen die Events nicht an. Ich habe auch schon versucht einen Event Filter zu verwenden. Es ist aber anscheinend so, dass die Events von den Items in der Szene abgefangen werden.

In den QGraphicsViews, die ich für die Vorschau verwende, soll keine Interaktion mit der Szene stattfinden. Ich möchte einfach nur wissen, ob irgendwo auf den Bereich des QGraphicsView geklickt wurde. Kennt jemand eventuell eine Lösung? Ich verwende Qt 4.4.0.

Viele Grüße,

Florian

Re: QGraphicsView und QMouseEvents

Verfasst: 21. Juli 2008 18:11
von fm
Hallo,

ich habe das Problem inzwischen so gelöst, dass ich das QFocusEvent auswerte, welches nach einem Klick auftritt. So funktioniert es nun.

Code: Alles auswählen

if((event->type() == QEvent::FocusIn) && (((QFocusEvent*)event)->reason() == Qt::MouseFocusReason)) {
...
}
Das Event fange ich in einem Event Filter ab.

Viele Grüße,

Florian

Verfasst: 21. Juli 2008 19:45
von upsala
Damit dein QGraphicsView nicht auf User-Events reagiert, kann man setInteractive(false) setzen.

Der eventFilter sollte auf jeden Fall funktionieren, notfalls nicht auf die QGraphicsView setzen sondern auf dessen viewport().

Verfasst: 23. Juli 2008 12:48
von fm
Vielen Dank für den Tipp mit dem viewport!