diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-02-28 15:47:23 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-03-01 10:36:15 +0000 |
commit | 1787f95f5727a20a4f0871736ad987fcfdf0f3c6 (patch) | |
tree | a1a4f2655416104d6c18b7a5398d4d574552cb3e /examples/svg/svgviewer/svgview.cpp | |
parent | d4addd30de02c1afd5f93cbc2319bd3bdaed9588 (diff) | |
download | qtsvg-1787f95f5727a20a4f0871736ad987fcfdf0f3c6.tar.gz |
SVG viewer example: Improve zoom facilityv5.11.0-beta3v5.11.0-beta2
Add a label displaying the current zoom with
a tooltip.
Add menu actions for ZoomIn/ZoomOut and Reset.
Task-number: QTBUG-60653
Change-Id: I7569427345737024b7a3191677e54c83673bb40e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'examples/svg/svgviewer/svgview.cpp')
-rw-r--r-- | examples/svg/svgviewer/svgview.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/examples/svg/svgviewer/svgview.cpp b/examples/svg/svgviewer/svgview.cpp index bbc853c..ecc8409 100644 --- a/examples/svg/svgviewer/svgview.cpp +++ b/examples/svg/svgviewer/svgview.cpp @@ -178,6 +178,29 @@ void SvgView::setViewOutline(bool enable) m_outlineItem->setVisible(enable); } +qreal SvgView::zoomFactor() const +{ + return transform().m11(); +} + +void SvgView::zoomIn() +{ + zoomBy(2); +} + +void SvgView::zoomOut() +{ + zoomBy(0.5); +} + +void SvgView::resetZoom() +{ + if (!qFuzzyCompare(zoomFactor(), qreal(1))) { + resetTransform(); + emit zoomChanged(); + } +} + void SvgView::paintEvent(QPaintEvent *event) { if (m_renderer == Image) { @@ -199,9 +222,16 @@ void SvgView::paintEvent(QPaintEvent *event) void SvgView::wheelEvent(QWheelEvent *event) { - qreal factor = qPow(1.2, event->delta() / 240.0); + zoomBy(qPow(1.2, event->delta() / 240.0)); +} + +void SvgView::zoomBy(qreal factor) +{ + const qreal currentZoom = zoomFactor(); + if ((factor < 1 && currentZoom < 0.1) || (factor > 1 && currentZoom > 10)) + return; scale(factor, factor); - event->accept(); + emit zoomChanged(); } QSvgRenderer *SvgView::renderer() const |