У меня есть ImageButton.qml, который должен менять изображение, когда пользователь держит кнопку.
import QtQuick 2.0
Image {
id: svg
property string idleImage
property string hoverImage
signal clicked
state: "idle"
source: state === "idle" ? idleImage : hoverImage
onSourceChanged: {
console.log("source = " + source)
}
MouseArea {
id: mouseArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton
onPressedChanged: {
svg.state = pressed ? "hover" : "idle"
}
onClicked: svg.clicked()
}
}
Но образ меняется не сразу. Меняется только когда держу кнопку несколько секунд. Когда я сразу же нажимаю и отпускаю кнопку мыши, я никогда не вижу изображение при наведении. onSourceChanged выполняется немедленно и выводит на консоль правильный источник изображения. Эта странная ошибка возникает только тогда, когда я использую QQuickWidget
. Когда я не использую виджеты, а только qml, все работает как положено.
states
, а такжеstate
. иметь толькоstate
смысла нет. Кстати, определение сигнала в вашем коде тоже неверно. - person folibis   schedule 31.05.2018state
(даже еслиstate
действительно обычно используется сstates
иPropertyChanges
). - person augre   schedule 31.05.2018