QGraphicsEllipseItem auf QGraphicsScene verschieben
Verfasst: 4. Juli 2012 12:02
Hallo zusammen.
Ich möchte per Mausklick auf einer QGraphicsScene ein QGraphicsEllipseItem einfügen. Mit dem Klick soll das Item erscheinen, solange die Maustaste gedrückt wird soll das Item verschiebbar sein und wenn die Maustaste losgelassen wird, bleibt das Item an der Position. Ich habe eine eigene Klasse GraphicsScene erstellt ung von QGraphicsScene geerbt um die Mouseevents überschreiben zu können:
Das funktioniert auch soweit ganz gut. Bei einem Klick ohne Bewegung erscheint das Item an der Position. Sobald ich aber das Item bewege, befindet es sich plötzlich viel weiter rechts bzw. viel weiter unten als der Mauszeiger. Ich kann es dann auch ganz normal bewegen, aber es ist einfach nicht unter dem Mauszeiger, wo es laut meiner "mouseMoveEvent"-Funktion eigentlich sein sollte.
Kann mir jemand erklären wo dieser Offset her kommt ?
Danke schonmal
Ich möchte per Mausklick auf einer QGraphicsScene ein QGraphicsEllipseItem einfügen. Mit dem Klick soll das Item erscheinen, solange die Maustaste gedrückt wird soll das Item verschiebbar sein und wenn die Maustaste losgelassen wird, bleibt das Item an der Position. Ich habe eine eigene Klasse GraphicsScene erstellt ung von QGraphicsScene geerbt um die Mouseevents überschreiben zu können:
Code: Alles auswählen
void G20_GraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if( event->button() == Qt::LeftButton )
{
QColor c_red_(Qt::red);
QBrush brush_(c_red_);
QPen pen_(c_red_);
m_ellipse = this->addEllipse(event->scenePos().x(),event->scenePos().y(),10,10,pen_,brush_);
}
}
void G20_GraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if( m_ellipse != 0 )
{
m_ellipse->setPos(event->scenePos().x(), event->scenePos().y());
}
else
{
QGraphicsScene::mouseMoveEvent(event);
}
}
void G20_GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
m_ellipse = 0;
QGraphicsScene::mouseReleaseEvent(event);
}
Kann mir jemand erklären wo dieser Offset her kommt ?
Danke schonmal