Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void MyBrowser::paintEvent(QPaintEvent *event)
- {
- if (!_pixmap.isNull()) {
- QPainter p(this);
- QRect picR = rect();
- if (_target.width() < picR.width()) { // zoom out
- QBrush b(Qt::white);
- p.setBrush(b);
- p.drawRect(picR);
- p.drawPixmap(_target, _pixmap, picR);
- }
- else { // zoom in
- p.drawPixmap(picR, _pixmap, _source);
- }
- }
- else
- QWebView::paintEvent(event);
- }
- bool MyBrowser::gestureEvent(QGestureEvent *event)
- {
- if (QGesture *pinch = event->gesture(Qt::PinchGesture)) {
- if (_pixmap.isNull()) {
- _scrollPos.hide();
- _pixmap = QPixmap::grabWidget (this, rect()) ;
- }
- pinchTriggered(static_cast<QPinchGesture *>(pinch));
- return true;
- }
- return false;
- }
- void MyBrowser::pinchTriggered(QPinchGesture *gesture)
- {
- QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
- if (changeFlags & QPinchGesture::ScaleFactorChanged) {
- qreal value = gesture->property("scaleFactor").toReal();
- _target = rect();
- QPoint cp = _target.center();
- _target.setWidth(_target.width()*value);
- if (value > 1) { // zoomin in
- _source = rect();
- _source.setWidth(_source.width()/value);
- _source.setHeight(_source.height()/value);
- }
- else
- _target.setHeight(_target.height()*value);
- }
- if (gesture->state() == Qt::GestureFinished) {
- qreal value = gesture->property("scaleFactor").toReal();
- setZoomFactor(value);
- _pixmap = QPixmap();
- }
- update();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement