Advertisement
Guest User

pinch

a guest
Jan 8th, 2011
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1.  
  2. void MyBrowser::paintEvent(QPaintEvent *event)
  3. {
  4.   if (!_pixmap.isNull()) {
  5.     QPainter p(this);
  6.     QRect picR = rect();
  7.     if (_target.width() <  picR.width()) { // zoom out
  8.       QBrush b(Qt::white);
  9.       p.setBrush(b);
  10.       p.drawRect(picR);
  11.       p.drawPixmap(_target, _pixmap, picR);
  12.     }
  13.     else { // zoom in
  14.       p.drawPixmap(picR, _pixmap, _source);
  15.     }
  16.   }
  17.   else
  18.     QWebView::paintEvent(event);
  19. }
  20.  
  21. bool MyBrowser::gestureEvent(QGestureEvent *event)
  22. {
  23.   if (QGesture *pinch = event->gesture(Qt::PinchGesture)) {
  24.     if (_pixmap.isNull()) {
  25.       _scrollPos.hide();
  26.       _pixmap = QPixmap::grabWidget (this, rect()) ;
  27.     }
  28.     pinchTriggered(static_cast<QPinchGesture *>(pinch));
  29.     return true;
  30.   }
  31.   return false;
  32. }
  33.  
  34.  
  35. void MyBrowser::pinchTriggered(QPinchGesture *gesture)
  36. {
  37.   QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
  38.   if (changeFlags & QPinchGesture::ScaleFactorChanged) {
  39.     qreal value = gesture->property("scaleFactor").toReal();
  40.     _target = rect();
  41.     QPoint cp = _target.center();
  42.     _target.setWidth(_target.width()*value);
  43.     if (value > 1) { // zoomin in
  44.       _source = rect();
  45.       _source.setWidth(_source.width()/value);
  46.       _source.setHeight(_source.height()/value);
  47.     }
  48.     else
  49.       _target.setHeight(_target.height()*value);
  50.   }
  51.   if (gesture->state() == Qt::GestureFinished) {
  52.     qreal value = gesture->property("scaleFactor").toReal();
  53.     setZoomFactor(value);
  54.     _pixmap = QPixmap();
  55.   }
  56.   update();
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement