m_zoomAnimation = new QPropertyAnimation(this, "viewScale", this);
connect(m_zoomAnimation, SIGNAL(finished()),
this, SIGNAL(viewZoomFinished()));
+ connect(m_zoomAnimation, SIGNAL(finished()),
+ this, SLOT(disableAnchor()));
setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing);
}
void MapView::mouseDoubleClickEvent(QMouseEvent *event)
{
qWarning() << __PRETTY_FUNCTION__ << event->pos().x() << event->pos().y();
+ qWarning() << __PRETTY_FUNCTION__ << mapToScene(event->pos()).toPoint().x() <<
+ mapToScene(event->pos()).toPoint().y();
+
+ QPoint centerPosition = mapToScene(QPoint(width() / 2, height() / 2)).toPoint();
+ QPoint pressPosition = mapToScene(event->pos()).toPoint();
+ QPoint scenePosition = centerPosition - ((centerPosition - pressPosition) / 2);
+ setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
emit zoomIn();
+// emit viewScrolled(scenePosition);
+// setTransformationAnchor(QGraphicsView::NoAnchor);
}
void MapView::mouseMoveEvent(QMouseEvent *event)
{
m_scenePosition += m_mousePosition - mapToScene(event->pos()).toPoint();
+ qWarning() << __PRETTY_FUNCTION__;
+
qDebug() << __PRETTY_FUNCTION__ << "m_scenePosition:" << m_scenePosition;
emit viewScrolled(m_scenePosition);
void MapView::mousePressEvent(QMouseEvent *event)
{
+ qWarning() << __PRETTY_FUNCTION__;
qDebug() << __PRETTY_FUNCTION__;
QGraphicsView::mousePressEvent(event);
m_scenePosition = mapToScene(width() / 2 - 1, height() / 2 - 1).toPoint();
}
+void MapView::mouseReleaseEvent(QMouseEvent *event)
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+ QGraphicsView::mouseReleaseEvent(event);
+}
+
void MapView::resizeEvent(QResizeEvent *event)
{
qDebug() << __PRETTY_FUNCTION__ << "Resize:" << event->size();
return transform().m11();
}
+
+void MapView::disableAnchor()
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+ QCoreApplication::postEvent(this, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(),
+ Qt::LeftButton, Qt::NoButton, Qt::NoModifier));
+
+// QGraphicsView::mouseReleaseEvent(new QMouseEvent(QEvent::MouseButtonRelease, QPoint(),
+// Qt::LeftButton, Qt::NoButton, Qt::NoModifier));
+ setTransformationAnchor(QGraphicsView::AnchorViewCenter);
+}
void mouseDoubleClickEvent(QMouseEvent *event);
/**
- * @brief Called when view is resized.
- *
- * @param event resize event
- */
- void resizeEvent(QResizeEvent *event);
-
- /**
* @brief Event handler for mouse move events
*
* Does calculate mouse movement delta from last event position and new view center
*/
void mousePressEvent(QMouseEvent *event);
+ void mouseReleaseEvent(QMouseEvent *event);
+
+ /**
+ * @brief Called when view is resized.
+ *
+ * @param event resize event
+ */
+ void resizeEvent(QResizeEvent *event);
+
/*******************************************************************************
* MEMBER FUNCTIONS AND SLOTS
******************************************************************************/
*/
void setZoomLevel(int zoomLevel);
+ void disableAnchor();
+
private:
/**
* @brief Set new view scale