我有一个带有委托的列表视图,其中MouseArea覆盖了整个委托。在该MouseArea的onClick插槽中,我专门设置了
mouse.accepted = false
,但是驻留在该委托中的QtQuick.Controls 1.4中的组合框仍然拒绝打开其单击弹出窗口。我已经测试了combobox应当通过以下方式获得点击:
ComboBox {
id: cbChapters
model: chapters
MouseArea {
anchors.fill: parent
onClicked: {
mouse.accepted = false
console.log("arrived")
}
}
}
点击事件做进入鼠标内部区域,而不是进入组合框本身,这似乎是什么问题?
答案 0 :(得分:0)
回答我自己的问题: 问题似乎是MouseArea自动接受 Pressed 事件,而Combobox代码本身包含以下内容:
onPressed: {
if (!Settings.hasTouchScreen)
popup.toggleShow()
}
onClicked: {
if (Settings.hasTouchScreen)
popup.toggleShow()
}
因此,点击似乎需要触摸屏才能打开弹出窗口(显然,桌面上不存在) 这仅留下 Pressed 来打开弹出窗口,但是由于它不是组合事件,并且在DisplayMouseEvents上不执行任何操作,因此在最上方的MouseArea被抑制。
解决方案可能是:
1)浏览鼠标区域链,并在其中的每个区域中进行设置:
onPressed: {
mouse.accepted = false
}
2)直接在“点击的”处理程序中调用弹出窗口
ComboBox {
id: cbChapters
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
onClicked: {
cbChapters.__popup.toggleShow()
}
}
}