QGraphicsView und QMouseEvents

Alles rund um die Programmierung mit Qt
Antworten
fm
Beiträge: 3
Registriert: 21. Juli 2008 16:14

QGraphicsView und QMouseEvents

Beitrag 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
fm
Beiträge: 3
Registriert: 21. Juli 2008 16:14

Re: QGraphicsView und QMouseEvents

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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().
fm
Beiträge: 3
Registriert: 21. Juli 2008 16:14

Beitrag von fm »

Vielen Dank für den Tipp mit dem viewport!
Antworten