qt不能在可滚动区域中完全实现手势,因为
explained in their own documentation
:
qt并不能很好地反映可滚动视图(继承qabstratemView的widget类、qml类)上的系统行为wrt笔势。
[…]
在小部件中,PAN识别器目前是硬编码的,可以使用2个触摸点。对于触摸屏,应将其更改为一个。但是,如果只保留一个手指平移来选择文本,就不能这样做。
当使用触摸屏时,小部件中的选择是由系统(Windows)或Qt本身(其他平台)通过触摸合成的鼠标事件驱动的。同样的触摸事件驱动着QgestureManager。
另一方面,有一个
known
(和)
old
)未定义的行为
QTouchEvents
和弹出窗口小部件:
打开弹出窗口或在有多个活动触点的情况下抓取鼠标时,qtouchevents的行为未定义。
也许这两个问题的结合是你问题的根源。
作为一种可能的解决方法(虽然不是完全按照您的需要),您可以使用
QWidget::grabGesture(Qt::PanGesture)
作为替代方案。此外,正如@mohammad kanan在评论中提到的,您可以尝试
Qt::FramelessWindowHint | Qt::Tool
而不是
Qt::Popup
.