QML Mousearea onReleased не выпущен
Я пытаюсь использовать Mousearea в своем прямоугольнике в QML. Я получаю onPressed, OnCLicked, onDoubleClicked и onPositionChanged.
Но QML не получает событие onReleased. Ребята, дайте мне знать, почему это не работает? Мой код ниже:
Rectangle {
width: parent.width
height: 500
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
preventStealing: true
onPositionChanged: {
// console.log("onPositionChanged mouse X", mouse.x)
// console.log("onPositionChanged mouse Y", mouse.y)
mouse.accepted = false;
}
onClicked:{
console.log("onClicked mouse X", mouse.x)
console.log("onClicked mouse Y", mouse.y)
mouse.accepted = false;
}
onDoubleClicked:{
console.log("onDoubleClicked mouse X", mouse.x)
console.log("onDoubleClicked mouse Y", mouse.y)
mouse.accepted = false;
}
onExited:{
console.log("onExited")
}
onPressAndHold:{
console.log("onPressAndHold mouse X", mouse.x)
console.log("onPressAndHold mouse Y", mouse.y)
mouse.accepted = false;
}
onPressed:{
console.log("onPressed mouse X", mouse.x)
console.log("onPressed mouse Y", mouse.y)
mouse.accepted = false;
}
onReleased:{
console.log("onReleased mouse X", mouse.x)
console.log("onReleased mouse Y", mouse.y)
mouse.accepted = false;
}
onCanceled:{
console.log("onCanceled mouse X", mouse.x)
console.log("onCanceled mouse Y", mouse.y)
mouse.accepted = false;
}
}
}
2 ответа
Согласно поведению события в этой документации.
При обработке этого сигнала изменение принятого свойства параметра мыши не имеет никакого эффекта.
Так что, если вы прокомментируете строки mouse.accepted = false;
в вышеприведенном коде это плохо работает.
Рабочий код ниже
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
preventStealing: true
onReleased:{
console.log("onReleased mouse X", mouse.x)
console.log("onReleased mouse Y", mouse.y)
}
}
Если вы подключите обработчик onPressed, который очищает mouse.accepted, MouseArea предполагает, что если вас не интересует пресса, вас не интересуют никакие последующие связанные сигналы, поэтому он не генерирует щелчок, нажатие кнопки AndHold или отпускание. С другой стороны, если вы оставите mouse.accepted установленным, то другие более низкие объекты MouseArea не будут видеть ни одно из сообщений. К сожалению, это делает невозможным мониторинг всех сигналов, которые обрабатываются более низкой областью мыши.
На документах написано, что onRelease, параметр мыши предоставляет информацию о щелчке, в том числе о координатах x и y его отпускания и о том, был ли удержан щелчок. onClicked и onPressAndHold заменяют сигнал onRelesed.