我有兴趣将使用基于鼠标的界面的应用程序移植到基于触摸屏的界面,并且我想知道当“大且摇摆不定”的指尖用户使用我的应用程序时如何最好地避免误操作
如果用户触摸某个位置并且他/她/它的脉搏或不耐烦导致指尖围绕某些像素摆动,我的应用程序不应将其解释为 QEvent::MouseMove
并导致滚动例如下面的列表。
似乎有两个类可以执行类似按下的事件,即QTouchEvent
和QMouseEvent
。
与可靠地检测用户意图的上述问题有什么区别?
QTouchEvent
是否为我解决了这个问题?我是否需要为
QTouchEvent
添加事件处理程序,与QMouseEvent
并行(以便向后兼容鼠标用户)?
我想在每个小部件中再次实现这种容忍度并不是一个好主意,但是应该有一些全局实例可以使它起作用,例如QApplication 或直接 X11。
最佳答案
尝试使用 QApplication::startDragDistance()
。这是应用程序范围内可访问的。如果这只需要在您的应用程序的一部分中检查(例如列表中的小尺寸元素),您仍然可以使用自定义距离。然后重新实现 QWidget::mouseMoveEvent(QMouseEvent *event)
并包含(来自文档):
if ((startPos - currentPos).manhattanLength() >= QApplication::startDragDistance())
startTheDrag();
关于c++ - 在哪里实现容忍度来决定何时在 Qt 中检测触摸屏按下事件和移动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23042479/