diff options
author | Kurt Korbatits <kurt.korbatits@nokia.com> | 2009-11-10 03:01:07 (GMT) |
---|---|---|
committer | Kurt Korbatits <kurt.korbatits@nokia.com> | 2009-11-10 03:01:07 (GMT) |
commit | 8df98549a4d84b5877e50318140c2041e17632fb (patch) | |
tree | 0c55d5ef4d8380ec45c6457a40b033dc45cbd579 /examples/gestures/imagegestures | |
parent | f55c317e377aaf0b3e24904e88dc1c4a6e15a20a (diff) | |
parent | 9a6de1fa0db0da8c4fa5eb904ef6d78cc619e332 (diff) | |
download | Qt-8df98549a4d84b5877e50318140c2041e17632fb.zip Qt-8df98549a4d84b5877e50318140c2041e17632fb.tar.gz Qt-8df98549a4d84b5877e50318140c2041e17632fb.tar.bz2 |
Merge branch '4.6' of ../qt into 4.6
Diffstat (limited to 'examples/gestures/imagegestures')
-rw-r--r-- | examples/gestures/imagegestures/imagewidget.cpp | 32 | ||||
-rw-r--r-- | examples/gestures/imagegestures/imagewidget.h | 1 |
2 files changed, 20 insertions, 13 deletions
diff --git a/examples/gestures/imagegestures/imagewidget.cpp b/examples/gestures/imagegestures/imagewidget.cpp index f615129..afa0185 100644 --- a/examples/gestures/imagegestures/imagewidget.cpp +++ b/examples/gestures/imagegestures/imagewidget.cpp @@ -50,7 +50,8 @@ ImageWidget::ImageWidget(QWidget *parent) horizontalOffset(0), verticalOffset(0), rotationAngle(0), - scaleFactor(1) + scaleFactor(1), + currentStepScaleFactor(1) { setMinimumSize(QSize(100,100)); @@ -75,7 +76,6 @@ bool ImageWidget::event(QEvent *event) void ImageWidget::paintEvent(QPaintEvent*) { QPainter p(this); - p.fillRect(rect(), Qt::white); float iw = currentImage.width(); float ih = currentImage.height(); @@ -85,7 +85,7 @@ void ImageWidget::paintEvent(QPaintEvent*) p.translate(ww/2, wh/2); p.translate(horizontalOffset, verticalOffset); p.rotate(rotationAngle); - p.scale(scaleFactor, scaleFactor); + p.scale(currentStepScaleFactor * scaleFactor, currentStepScaleFactor * scaleFactor); p.translate(-iw/2, -ih/2); p.drawImage(0, 0, currentImage); } @@ -94,6 +94,7 @@ void ImageWidget::mouseDoubleClickEvent(QMouseEvent *) { rotationAngle = 0; scaleFactor = 1; + currentStepScaleFactor = 1; verticalOffset = 0; horizontalOffset = 0; update(); @@ -102,12 +103,12 @@ void ImageWidget::mouseDoubleClickEvent(QMouseEvent *) //! [gesture event handler] bool ImageWidget::gestureEvent(QGestureEvent *event) { - if (QGesture *pan = event->gesture(Qt::PanGesture)) + if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) + swipeTriggered(static_cast<QSwipeGesture *>(swipe)); + else if (QGesture *pan = event->gesture(Qt::PanGesture)) panTriggered(static_cast<QPanGesture *>(pan)); if (QGesture *pinch = event->gesture(Qt::PinchGesture)) pinchTriggered(static_cast<QPinchGesture *>(pinch)); - if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) - swipeTriggered(static_cast<QSwipeGesture *>(swipe)); return true; } //! [gesture event handler] @@ -140,8 +141,11 @@ void ImageWidget::pinchTriggered(QPinchGesture *gesture) } if (changeFlags & QPinchGesture::ScaleFactorChanged) { qreal value = gesture->property("scaleFactor").toReal(); - qreal lastValue = gesture->property("lastScaleFactor").toReal(); - scaleFactor += value - lastValue; + currentStepScaleFactor = value; + } + if (gesture->state() == Qt::GestureFinished) { + scaleFactor *= currentStepScaleFactor; + currentStepScaleFactor = 1; } update(); } @@ -149,12 +153,14 @@ void ImageWidget::pinchTriggered(QPinchGesture *gesture) //! [swipe function] void ImageWidget::swipeTriggered(QSwipeGesture *gesture) { - if (gesture->horizontalDirection() == QSwipeGesture::Left + if (gesture->state() == Qt::GestureFinished) { + if (gesture->horizontalDirection() == QSwipeGesture::Left || gesture->verticalDirection() == QSwipeGesture::Up) - goPrevImage(); - else - goNextImage(); - update(); + goPrevImage(); + else + goNextImage(); + update(); + } } //! [swipe function] diff --git a/examples/gestures/imagegestures/imagewidget.h b/examples/gestures/imagegestures/imagewidget.h index 56e2316..7a68488 100644 --- a/examples/gestures/imagegestures/imagewidget.h +++ b/examples/gestures/imagegestures/imagewidget.h @@ -93,6 +93,7 @@ private: float verticalOffset; float rotationAngle; float scaleFactor; + float currentStepScaleFactor; //! [class definition end] }; //! [class definition end] |