Hallo,
habe folgendes Problem: Wenn man ein QGraphicsItem in eine QGraphicsscene setzt und diesem Item das ItemisSelectible-Flag spendiert, dann übernimmt ja die Scene alle Selektierungsaufgaben, z.B. mittels Rubberband usw. Die Einzige Möglichkeit dann mehrere Items mit der Maus zu selektieren ist via Rubberband oder CTRL+Click. Ich will aber gern einen Modus (z.B. wenn ein bestimmtes Flag gesetzt ist), bei dem man nicht CTRL drücken muss um mehrere Items zu selektieren. Und genau das bekomme ich nicht hin. Jedesmal werden alle anderen Items automatisch deselektiert. Ich habe schon alles versucht. Gibt es denn eine Stelle, an der man eingreifen kann um die automatische Selektierung zu verhindern?
Der Hintergrund ist, dass ich ein Polygon in einer Scene habe dessen Punkte man verschieben können soll. Die Anfasspunkte (zum Verschieben der Polygonpunkte mit der Maus) sind Child-Items des Polygons. Die Anfasspunkte werden versteckt sobald das Polygon deselektiert wird (ich fange itemChanged ab, um eine Deselektierung festzustellen). Wenn das Polygon selektiert ist, sind auch die Anfasspunkte zu sehen. Das Problem ist, dass sobald man auf einen Anfasspunkt klickt, das Polygon sofort deselektiert wird und damit alle Anfasspunkte versteckt werden, so dass man sie nicht mehr anfassen kann. Was ich jetzt brauche ist die Möglichkeit, dass man den Anfasspunkt anklicken kann, dieser dadurch selektiert wird, aber die Selektierung des Polygons (also dessen Parent) erhalten bleibt. Ich bekomme das einfach nicht ohne CTRL-Taste hin.
Danke
MM
QGraphicsscene Items selektieren
-
maikelmeyers
- Beiträge: 20
- Registriert: 16. Mai 2010 17:19
-
dennisDennis
- Beiträge: 17
- Registriert: 23. September 2011 16:21
Re: QGraphicsscene Items selektieren
Du kannst dich an die Mouseevents von deiner Graphicsview Klasse hängen.
void MyGraphicsview::mouseReleaseEvent ( QMouseEvent * event );
und dort mit if(event->button() == Qt::LeftButton){} auf einen einzelnen Linksklick reagieren.
Die Graphicsitems kann man dann manuell auswählen.
Die BasisMethode QGraphicsView::mouseReleaseEvent ( QMouseEvent * event );
darf dann nicht mehr aufgerufen werden.
Gruß
Dennis
void MyGraphicsview::mouseReleaseEvent ( QMouseEvent * event );
und dort mit if(event->button() == Qt::LeftButton){} auf einen einzelnen Linksklick reagieren.
Die Graphicsitems kann man dann manuell auswählen.
Die BasisMethode QGraphicsView::mouseReleaseEvent ( QMouseEvent * event );
darf dann nicht mehr aufgerufen werden.
Gruß
Dennis