Morgen
ich hoffe ihr könnt mir helfen.
Folgende Situatuion:
Ich habe mir das Beispiel "DiagramScene" mal nächer angesehen und möchte
es etwas ändern.
Beschreibung: Auf einer "QGraphicsScene" werden verschiedene
"QGraphicsPolygonItem" erstellt, die man mit der Maus bewegen kann.
Änderung:
Ich möchte nun im "MouseMoveEvent" der "QGraphicsPolygonItem" prüfen ob
eine Kollision stattgefunden hat und darauf reagieren. Wenn die
Kollision da ist, möchte ich das das Objekt an der Maus, an eine Pos
setzen und es soll vom MouseCoursor verschwinden. Das Versetzen klapp,
aber ich bekomme das Objekt nicht von der Mouse, was kann ich tun???
Was ich mir vorgestellt hatte war das ich mal ebend ein
"MouseReleaseEvent" an die Scene verschicke und gut ist. ABER scheinbar
empfängt die Scene nicht mein Event und es wird nicht ausgeführt.
1 | void DiagramItem::mouseMoveEvent( QGraphicsSceneMouseEvent * event )
|
2 | {
|
3 | // erst das Move ausführen
|
4 | QGraphicsPolygonItem::mouseMoveEvent( event);
|
5 |
|
6 | // und prüfen
|
7 | QList<QGraphicsItem *> list = collidingItems(); //
|
8 | if(list.count() > 0)
|
9 | {
|
10 | // Kollision ist da
|
11 | moveBy(10, 10);
|
12 | if (MyEvent != NULL)
|
13 | {
|
14 | delete MyEvent;
|
15 | MyEvent= NULL;
|
16 | }
|
17 | MyEvent= new QMouseEvent(QEvent::MouseButtonRelease, this->pos().toPoint(), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
|
18 | QApplication::sendEvent(this->scene(), MyEvent);
|
19 | }
|
20 | }
|
PS: Wenn ich ein "GraphicsSceneMouseRelease" senden möchte, stürzt das
Programm ab!
Ich habe auch schon dies getestet:
1 | bool QGraphicsScene::sendEvent ( QGraphicsItem * item, QEvent * event )
|
aber ohne Erfolg.
mfg
Stephan