ich möchte gerne ein rechteck in meiner graphicscene ziehen und dann die daten aus dem Qrect rauslesen. außerdem will ich das mausrad benutzen. ich habe folgenden code geschrieben, den der compiler ohne meckern annimmt. wenn ich die datei jedoch starte, und ich in der graphic scene klicke bzw. eine rechteck ziehen will, passiert gar nichts.
danke für deine antwort. Ich habe die if Anweisung mal weggelassen und es funktioniert. Außerdem habe ich normale MouseEvents verwendet und keine SceneMouse Events.
Jetzt habe ich jedoch das Problem, dass ich nicht weiß wie ich das ganze in meine Graphic Scene bekomme. In meinem MainWindow klappt das alles aber wie kann ich die Events in meinem GrpahicScene Fenster abfangen?
Wenn du eh schon mit dem Graphics View Framework arbeitest, leite doch gleich von QGraphicsView/Scene ab (scene ist vllt. etwas leichter, wenn deine scene in mehreren Views angezeigt werden soll und das Auswahlrechteck nur dort sichbar sein soll, musst du von der view ableiten).
Wenn du von der Scene ableitest kannst du einfach statt nem QRubberBand ein QGraphicsRectItem einblenden. Sollte (wg. Umrechnung scenecoordinates<->viewcoordinates) leichter sein an die Items im rect zu kommen.
BTW: wenn ImageWindow ein normales QWidget (im Prinzip alles andere außer QGraphicsScene) ist, wirst du mit diesen events nicht weit kommen. QGraphicsSceneMouseEvents bekommst du nur (!) in ner QGraphicsScene! Wenn du mit einer Basisklasse !QGraphicsScene arbeitest, musst du die normalen Events überschreiben.
Also im Endeffekt hab ich das ganze folgend gelöst. Ich habe heute zufällig in der Dokumentation gelesen, dass es in der QGraphicsView Klasse eine DragMode Funktion gibt. Mit dieser kann man direkt ein Rubberband erstellen oder per gedrückter Maustaste das "Viewfenster" verschieben. Ich habe das ganze so gecodet, dass ich per Leertaste zwischen den beiden Modis hin und her switchen kann. Die gewünschten Koordianten schreibe ich in ein QRect, aus dem ich später auslesen kann.
Hier mal der Code:
Das Problem mit den QGraphicsScene Events habe ich mit einer eigenen abgeleiteten QGraphicsScene Klasse realisiert.
Hoffe das hilft jemanden irgendwie weiter :