使用触控板或触摸板的两根手指移动平滑和动态滚动?

Posted

技术标签:

【中文标题】使用触控板或触摸板的两根手指移动平滑和动态滚动?【英文标题】:Two finger moving smooth and kinetic scrolling with trackpad or touchpad? 【发布时间】:2014-05-15 06:37:26 【问题描述】:

我正在开发一个类似于 Mac 的 hex editor 的 Qt 应用程序。 (图片来自谷歌)

它有很大一部分数据需要垂直滚动(向上和向下),因为它以十六进制格式显示所有大文件数据。

在我的应用程序中,我想在两个方向上添加两指平滑滚动:向上和向下,就像 Macbook Air 两指滚动一样。 它适用于鼠标滚轮,但不适用于触控板两指移动滚动。

如果有人有解决方案,请帮助我。提前致谢。

【问题讨论】:

请编辑您的帖子以使用可接受的英语,并告诉我们您已经尝试过什么。 【参考方案1】:

滚动条允许点击和拖动等手势进行动态滚动。

http://qt-project.org/doc/qt-5/qscroller.html#details

本页注意事项:

QScroller::TouchGesture 0 
The gesture recognizer will only trigger on touch events. Specifically it will react on single touch points when using a touch screen and dual touch points when using a touchpad.

那么他们给你的例子会变成这样:

QWidget *w = ...;
QScroller::grabGesture(w, QScroller::TouchGesture);

还有更多关于通过处理 QTouchEvent 来使用触摸屏和触摸板做新事情:

http://qt-project.org/doc/qt-5/qtouchevent.html#details

希望对您有所帮助。

【讨论】:

实际上我正在使用 Qt 4.6 并且没有名为 QScroller 的类。请建议我替代解决方案。 Qt 5.x 不是一个选项?我认为以前没有很好地支持触摸。您也可以尝试实现自己的动态滚动并使其所在的 QScrollArea 具有很强的焦点。然后处理 mouseScrollEvents 进行动态滚动。 在 Qt 4.x 上实现它的其他一些方法:blog.qt.digia.com/blog/2009/07/19/…developer.nokia.com/community/discussion/showthread.php/… 它与鼠标滚轮完美配合,但在触控板或触摸板垂直移动两根手指(向上和向下)时,它只能读取为一个滚动条(因为我们只移动一次鼠标滚轮)。 如何使用触控板获取 mouseWheel.delta(),移动两根手指。

以上是关于使用触控板或触摸板的两根手指移动平滑和动态滚动?的主要内容,如果未能解决你的问题,请参考以下文章

触控板的绝对触控坐标

华硕电脑的触控板两个手指没有反应了

MacOS 如何选择鼠标不飘滚动平滑

surface pro4 通过键盘的触摸板怎么实现右击?

笔记本电脑的触摸板失灵?

WPF学习第十八章 多点触控输入