QML: изменение стиля при наведении и при нажатии на кнопку
hover, containsMouse, mouseArea, onhover
Получается сделать либо одно либо другое, но не то и другое одновременно.
так работает: color: parent.pressed ? "violet" : "pink"
и так тоже: color: mouseArea.containsMouse ? "blue" : "magenta"
А вот так уже нет:
if (parent.pressed) { color: "red" } else if (mouseArea.containsMouse) { color: "blue" } else { color: "green" }
Пробовал и по-другому писать условия, не получается.
Весь работающий (по отдельности) код:
import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12 Window { id: win visible: true width: 640 height: 480 title: qsTr("Hover and Press") ColumnLayout { anchors.fill: parent spacing: 25 Item { Layout.fillHeight: true } Button { Layout.alignment: Qt.AlignCenter implicitWidth: 200 implicitHeight: 100 background: Rectangle { border.width:5 border.color: parent.pressed ? "pink" : "violet" color: parent.pressed ? "violet" : "pink" radius: width/4 Text { anchors.centerIn: parent font.pointSize: 16 font.bold: true text: "PRESS" } } } Button { Layout.alignment: Qt.AlignCenter implicitWidth: 200 implicitHeight: 100 MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true } background: Rectangle { border.width:5 border.color: mouseArea.containsMouse ? "magenta" : "blue" color: mouseArea.containsMouse ? "blue" : "magenta" radius: width/4 Text { anchors.centerIn: parent font.pointSize: 16 font.bold: true text: "HOVER" } } } Item { Layout.fillHeight: true } } }
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
AD
- Akiv Doros
- 11 ноября 2024 г. 22:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50баллов,
- Очки рейтинга-4
m
- molni99
- 26 октября 2024 г. 8:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
m
- molni99
- 26 октября 2024 г. 8:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20баллов,
- Очки рейтинга-10
Последние комментарии
Как написать игру на Qt - Урок 3. Взаимодействие с другими объектами what is priligy tablets What happens during the LASIK surgery process
Использование переменных объявленных в CMakeLists.txt внутри C++ файлов where can i buy priligy online safely Tom Platz How about things like we read about in the magazines like roid rage and does that really
Django - Урок 055. Как написать функционал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
QML - Урок 035. Использование перечислений в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
Сейчас обсуждают на форуме
добавить qlineseries в функции Listen intently to what Jerry says about Conditional Acceptance because that s the bargaining chip in the song and dance you will have to engage in to protect yourself and your family from AMI S…
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
IscanderChe31 октября 2024 г. 22:43
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Реализация навигации по разделам Спасибо Евгений!
Игорь Максимов3 октября 2024 г. 11:05
Да, с синтаксисом были проблемы, спасибо за подсказку. Правильно было бы так:
И всё же так работает только наведение, на нажатие не рагирует. Попробовал так:
То же самое.
Добавил в MouseArea
Результат как с onClicked - один раз меняется цвет и больше не реагирует на события.
Поэтому добавил onReleased - поведение оказалось не таким как предполагалось интуитивно, но меня устроит. После отжимания, кнопка приобретает указанный цвет и больше не реагирует на наведение. В моём случае это и не понадобится, а могло бы.
Не сказать что такой вариант устраивает, остаются вопросы, нехорошо. Но пока можно и так.
С третьей кнопкой все целиком так. Если есть идеи по очеловечиванию этой кракозябры малой кровью то прошу пожалуйста.
Читал доки. Узнал про сигналы entered, exited в MouseArea QML Type.
С ним можно сделать то о чём спрашивал, хотя может это и не лучший способ.
А вот не спросил бы - не стал бы читать доков наверное, не знаю почему так.
Ломает биндинг, поэтому лучше не использовать.
Как раз как бы его теперь сломать, чтобы после отжимания кнопка становилась серой и больше ни на что не реагировала.
Так работает превосходно, если бы только биндинг не нужно было сломать, как оказалось:
Так кнопка перестанет быть активной и не будет ни на что реагировать)
Ну там всякие anchors.fill: parent и тп - добавить по вкусу)
Хм.. по-моему пробовал такое. Проверю ещё раз после работы.
Ура, спасибо большое! Работает.
Всем спасибо за подсказки.