如何在qt 4.6.3中取消触摸事件?

时间:2015-06-17 22:47:59

标签: c++ qt

Qt-4中,Qt-5中没有QEvent::TouchCancel标志,如何在Qt-4中模拟等效事件?

背景

我正在尝试根据here描述的方法在Qt-4中实现动态滚动。

基本框架保持不变,但我将所有MouseEvent更改为TouchEvent s。

问题在于,此代码会阻止所有子窗口小部件上的QEvent::TouchBegin事件,如果将手势视为滚动,则将其用作滚动的开头,并发布一对模拟的QEvent::TouchBegin和当手势被视为点击时,QEvent::TouchEnd

要求QPushButton需要QEvent::TouchBegin来触发“按下”的动画效果。这种方法虽然使按钮仍然可用,但消除了这种影响。

我正在尝试通过保留QEvent::TouchBegin来解决此问题,但是当手势被视为滚动时取消它,并在手势被视为点击时发布QEvent::TouchEnd

问题是,如何在QT-4中取消触摸事件?

如何在(0,0)构建触摸点?

在我的应用程序中,(0,0)处的任何窗口小部件都不接受触摸事件,因此在(0,0)处发布QEvent::TouchEnd会有效地使所有已启动的触摸事件无效。但是,Qt中的触摸点没有可用于在任意位置生成人工触摸点的可用构造函数,这种解决方法似乎也很困难。

最后,最后可能的解决方案,将Qt-5中的QScroller类集成到Qt-4.6.3项目有多困难?

1 个答案:

答案 0 :(得分:0)

这里有Qt 4.8的Qt5 QScroller代码版本: https://qt.gitorious.org/qt-labs/kineticscroller

我成功使用它,直到我升级到5.你应该至少升级到4.8。