Qt Quick 6.9+ ContextMenu在Android 15+上无法正常触发?
问题原因
Android 15(API 35)及以上系统对触摸交互的处理逻辑有调整,Qt Quick Controls的ContextMenu附加类型默认的长按触发机制在该版本上无法正常生效,导致长按目标控件时无法弹出菜单。
解决方案
通过显式添加MouseArea监听长按事件,手动调用上下文菜单的open()方法即可解决,修改后的代码如下:
import QtQuick import QtQuick.Window import QtQuick.Controls ApplicationWindow { visible: true width: 360 height: 520 Rectangle { width: 200 height: 200 color: "red" MouseArea { anchors.fill: parent acceptedButtons: Qt.RightButton | Qt.LeftButton onLongPressed: contextMenu.open() } ContextMenu.menu: Menu { id: contextMenu MenuItem { text: "Option 1" } } } }
额外说明
- 这种方式绕过了
ContextMenu附加类型的默认触发逻辑,直接通过手势事件手动触发,兼容性更好,适配Android高版本的交互规则。 - 代码中
acceptedButtons同时包含左右键,桌面端右键点击也能正常触发菜单,兼顾多平台使用场景。
内容的提问来源于stack exchange,提问作者Nullarity
相关产品推荐
相关产品推荐

