#qml
#qml
Вопрос:
У меня есть одна кнопка. Я хочу изменить состояния кнопки, например:
Изображение по умолчанию — black
. onEntered
я хочу изображение как blue
, onExited
я хочу изображение как black
(равное состоянию по умолчанию), и onReleased
я хочу изображение как blue
(равное состоянию onEntered).
Примечание:
onRelease
должно быть активным внутри кнопки, а вне кнопкиonRelease
не должно работать.
Как этого можно достичь?
Область мыши выглядит следующим образом:
MouseArea
{
anchors.fill: firstImage(parent)
onEntered:
{
firstImage.source = "blue.img"
}
onExited:
{
firstImage.source = "black.img"
}
onReleased:
{
firstImage.source = "blue.img"
}
}
Проблема, с которой я сталкиваюсь, заключается в:
onRelease
активна за пределами кнопки.
Я хочу onRelease
быть активным при отпускании нажатия внутри кнопки.
Комментарии:
1. Что
anchors.fill: firstImage(parent)
должно означать? Если вы пытаетесь получить родительский элементfirstImage
, вы должны сделатьfirstImage.parent
Ответ №1:
Вы можете использовать тот факт, что вы можете присвоить каждому объекту в qml дополнительное пользовательское свойство.
Я придумал следующее, что, похоже, соответствует вашему запросу, однако я вижу недостаток, потому что, когда вы «вводите» и нажимаете, кнопка переходит в состояние «введено», поэтому в состоянии «отпущено» разницы нет, и после выхода из области мыши она снова переходит в состояние «выход».
Обратите внимание, я не копировал материал firstImage.source, но вы можете легко адаптировать этот пример к вашей ситуации
import QtQuick.Controls 2.4
Button {
hoverEnabled: true
property bool touched : false
onHoveredChanged: touched = hovered
onReleased: touched = true
text: touched ? "touched" : "not touched"
}
hoverEnabled
Необходимо установить
Комментарии:
1. То, что вы сделали, правильно. Я попробовал то же самое с использованием изображений, это сработало. Но я хочу еще одну функцию, т. Е. onclicked внутри области мыши, я также хочу показывать состояние onEntered и onExited. Пожалуйста, попробуйте этот код (используя изображения).
2. Окно { идентификатор: строка свойства mainwindow img_src: строка свойства «abc.png» img; Кнопка {ширина: 100; высота: 50; Наведен: false onHoveredChanged: img_src = наведен на выпущенное: img_src = «HDX_Caps_Enter_Selected.png» Изображение {идентификатор: имя; источник: img_src ? img_src : img anchors.fill: родительский} Область мыши {anchors.fill: родительский onEntered:{name.source = «HDX_Caps_Enter_Selected.png»} onExited:{ name.source = abc.png» }}}}
3. Мой пример также работает при нажатии кнопки. Так, может быть, я неправильно понял? Также ваш пример в приведенном выше комментарии содержит некоторые ошибки.