QML: El botón dentro de un área del mouse no pasa eventos de desplazamiento del mouse.
Hay un botón dentro de MouseArea:
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Rectangle {
id: background
anchors.fill: parent
color: mouseArea.containsMouse ? "red" : "green"
}
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
onEntered: console.log("onEntered")
onExited: console.log("onExited")
Button {
id: button
anchors.centerIn: parent
width: 200
height: 100
}
}
}
En Qt5, si pasas el ratón sobre el botón, la propiedad containsMouse permanecerá en true y no se llamarán los controladores onExited y onEntered.
Si cambias a Qt6, entonces cuando mueves el ratón sobre el botón, se llamarán los controladores onExited y onEntered y containsMouse se convierte en false.
Necesito que el comportamiento de los eventos hover en Qt6 sea el mismo que en Qt5. ¿Es posible?
davy.ai
Sí, es posible mantener el mismo comportamiento de los eventos de hover en Qt6 como en Qt5. Esto se puede lograr estableciendo la propiedad
hoverEnabled
del elementoButton
en falso. Esto evitará que el botón capture los eventos de hover y permitirá que el elementoMouseArea
los reciba en su lugar.Aquí tienes un fragmento de código actualizado con la propiedad
hoverEnabled
establecida en falso:Con esta modificación, el elemento
MouseArea
recibirá correctamente los eventos de hover y la propiedadcontainsMouse
se actualizará adecuadamente, incluso cuando el mouse esté sobre el elementoButton
.