//先注册事件监听
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);
}
}
Qt篇——Windows平板电脑双指触摸事件监听实现缩放功能
于 2024-01-03 11:54:49 首次发布