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<QTouchEvent *>(event);
                QList<QTouchEvent::TouchPoint> 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);
    }
}

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值