QT:触摸屏支持手指触摸,增加touch事件touchevent,记录前后touch坐标并处理
1、手指触摸事件当做鼠标事件去响应的可行性
目前所见,有的QT关于触摸屏触摸事件的处理,是把手指点击屏幕的行为,作为鼠标事件去处理的,这样的情况在大部分场景是可以“应付应付”的,但是如果在如下场景(可能更多)这样的处理显然就不满足了。
比如如下场景:【手指点击空白处退出当前的窗口】;
是鼠标点击的话,假设没有移动,MouseButtonPress 和 MouseButtonRelease记录的坐标point其实是同一个点,这样的判断是没有问题的。
可是,如果现在手指点击,手指和触摸屏的接触点可就不一样了,手指接触屏幕上去就不是一个点了。这个场景下,就需要touchevent事件,去处理手指触摸事件了。
2、触摸事件touchEvent的添加
首先,让在需要加touch事件的控件能够接收touch;
this->setAttribute(Qt::WA_AcceptTouchEvents);
随后,事件过滤器增加如下三个事件,就好了,一般都是重写一下
TouchBegin // 开始触摸
TouchUpdate // 状态更新,不如手指滑动之类的
TouchEnd // 手指松开,结束触摸
3、重写touch事件
头文件如下:
private:
bool touchBeginEventProcess(QEvent *event);
bool touchUpdateEventProcess(QEvent *event);
bool touchEndEventProcess(QEvent *event);
函数,事件过滤器:
bool WidgetTouch::eventFilter(QObject *object, QEvent *event