C++ 如何在收缩缩放期间禁用MouseeEvent?

C++ 如何在收缩缩放期间禁用MouseeEvent?,c++,qt,C++,Qt,我有一个QGraphicsItem我已经实现了mousePressEvent,mouseMoveEvent和mouseReleaseEvent用于按下和拖动 我还实现了用于收缩缩放的收缩手势 然而,我发现在收缩缩放过程中,鼠标事件也会被触发,因为触摸事件会通过sceneEvent()自动转换为鼠标事件 当我有两个用于收缩缩放的触点时,如何禁用鼠标事件 您必须接受触摸事件,以避免它们被转换为鼠标事件。还有一个Qt::AA_synthesiszemouseforunhandledtouchevent

我有一个
QGraphicsItem
我已经实现了
mousePressEvent
mouseMoveEvent
mouseReleaseEvent
用于按下和拖动

我还实现了用于收缩缩放的收缩手势

然而,我发现在收缩缩放过程中,鼠标事件也会被触发,因为触摸事件会通过
sceneEvent()
自动转换为鼠标事件


当我有两个用于收缩缩放的触点时,如何禁用鼠标事件

您必须接受触摸事件,以避免它们被转换为鼠标事件。还有一个
Qt::AA_synthesiszemouseforunhandledtouchevents
属性,强制执行不可接受的触摸事件的事务处理,默认情况下启用该属性:

应用程序不接受的所有触摸事件都将被删除 转换为鼠标左键事件。此属性是 默认情况下启用


但是,当有两个接触点时,我如何能够接受触摸事件,而当只有一个接触点时,我又如何允许将事件转换为mouseEvent?类似于
bool sceneEvent(){if(e->touchPoints().count()==2)return true;}
return true或显式接受事件(event->accept();)没有阻止mouseMoveEvent的产生!它在Qt5.5中进行了测试,还有一个观察结果是,在执行挤压操作时生成手势事件之前生成了mouseMoveEvent,因此在我看来,除了上述内容之外,还需要配置其他内容。注意:在我调试的程序中,Qt::AA_synthemizemouseforunhandledtouchevents属性被显式设置为true。