Qt篇——Windows平板电脑双指触摸事件监听实现缩放功能

//先注册事件监听
installEventFilter(this);



//事件监听, 筛选触摸事件,其余事件正常返回
bool TestView::eventFilter(QObject *target, QEvent *event) {
    if (target == this) {
        switch (event->type()) {
            case QEvent::TouchBegin:
            {
                //单指按下, 双指按下之前大概率会先触发此方法,除非双指完全同时按下才不触发
                //可以记录还未开始缩放前的当前缩放比例
                return true;

            }
            case QEvent::TouchUpdate:
            case QEvent::TouchEnd:
            {
                QTouchEvent *touchEvent = static_cast(event);
                QList touchPoints = touchEvent->touchPoints();
                if (touchPoints.count() == 2) {    //双指
                    const QTouchEvent::TouchPoint &touchPoint0 = touchPoints.first();
                    const QTouchEvent::TouchPoint &touchPoint1 = touchPoints.last();
                    qreal currentScaleFactor = QLineF(touchPoint0.pos(), touchPoint1.pos()).length()
                            / QLineF(touchPoint0.startPos(), touchPoint1.startPos()).length();
                    //这里根据计算的currentScaleFactor值,对你的控件进行缩放
                }
                return true;
            }
        }
        return TestView::event(event);
    }
}

你可能感兴趣的:(Qt篇,qt,开发语言)