在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项目有多困难?
答案 0 :(得分:0)
这里有Qt 4.8的Qt5 QScroller代码版本: https://qt.gitorious.org/qt-labs/kineticscroller
我成功使用它,直到我升级到5.你应该至少升级到4.8。