有没有办法覆盖 ComboBox MouseArea 以忽略滚轮事件而不是更改当前索引? ComboBox 本身无法更改滚轮焦点行为。到目前为止,我已经尝试使用以下代码覆盖 CB MouseArea 中的 onWheel:
ComboBox {
Component.onCompleted: {
for (var i = 0; i < combobox_ctrl.children.length; ++i) {
console.log(combobox_ctrl.children[i])
console.log(combobox_ctrl.children[i].hasOwnProperty('onWheel'))
if (combobox_ctrl.children[i].hasOwnProperty('onWheel')) {
console.log(combobox_ctrl.children[i]['onWheel'])
combobox_ctrl.children[i]['onWheel'] = function() { console.log("CB on wheel!") }
//combobox_ctrl.children[i]onWheel = function() { console.log("CB on wheel!")
//combobox_ctrl.children[i].destroy()
}
}
}
}
但我明白了
TypeError: Cannot assign to read-only property "wheel"
有没有人能够在 Qml 的 ComboBox 上禁用轮子事件?
//编辑
例如,在 Slider 控件中,我能够像这样删除滚轮事件处理:
Slider {
Component.onCompleted: {
for (var i = 0; i < slider.children.length; ++i) {
console.log(slider.children[i])
if (slider.children[i].hasOwnProperty("onVerticalWheelMoved") && slider.children[i].hasOwnProperty("onHorizontalWheelMoved")) {
console.log("Found wheel area!")
slider.children[i].destroy()
}
}
}
}
但在 slider 中 WheelArea 不负责处理“点击”事件。
最佳答案
您可以将 MouseArea
放在 ComboBox
和钢轮事件上。
ComboBox {
anchors.centerIn: parent
model: [ "Banana", "Apple", "Coconut" ]
MouseArea {
anchors.fill: parent
onWheel: {
// do nothing
}
onPressed: {
// propogate to ComboBox
mouse.accepted = false;
}
onReleased: {
// propogate to ComboBox
mouse.accepted = false;
}
}
}
关于Qt QML ComboBox 覆盖滚轮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33076960/