PDA

View Full Version : Move QGraphicsScene by mouse



minigo
7th April 2017, 13:00
HI!

I want to move a scene with mouse (left mouse button with CTRL). I use this code:


void GraphicsView::mousePressEvent (QMouseEvent *event)
{
if (event->button () == Qt::LeftButton && event->modifiers ().testFlag (Qt::ControlModifier))
{
setDragMode (QGraphicsView::ScrollHandDrag);
setInteractive (false);

_originX = event->x ();
_originY = event->y ();
}
else
{
QGraphicsView::mousePressEvent (event);
}
}

void GraphicsView::mouseMoveEvent (QMouseEvent *event)
{
if (event->buttons () & Qt::LeftButton && event->modifiers ().testFlag (Qt::ControlModifier))
{
QPointF oldp = mapToScene (_originX, _originY);
QPointF newp = mapToScene (event->pos ());
QPointF translation = newp - oldp;

translate (translation.x (), translation.y ());

_originX = event->x ();
_originY = event->y ();
return;
}

QGraphicsView::mouseMoveEvent (event);
}

void GraphicsView::mouseReleaseEvent (QMouseEvent *event)
{
if (event->button () == Qt::LeftButton && event->modifiers ().testFlag (Qt::ControlModifier))
{
setDragMode (QGraphicsView::NoDrag);
setInteractive (true);
}
else
{
QGraphicsView::mouseReleaseEvent (event);
}
}

And this code is not work.

wysota
18th April 2017, 08:54
Is the scene larger than the view?