LINUX.ORG.RU

Как сделать неактивным GroupBox в QML

 groupbox,


0

1

Что-то я не пойму, как управляться GroupBox в QML

Мне нужно уметь делать его неактивным или активным через его свойства. Я нашел такие свойства:

checkable - начинает отображать квадратик рядом с заголовком. Если квадратик без галочки, _некоторые_ внутренние элеметы видятся как неактивные. Почему некоторые? Потому что что например элемент с типом Text не становится сереньким, а CheckBox-становится. Но это свойство мне не подходит, потому что мне не нужен квадратик в заголовке.

checked - работает только если checkable равно true. Управляет галочкой на квадратике. Тоже не то что нужно.

flat - не понял что такое. Вроде как должен распахивать-сворачивать GroupBox. Но на внешний вид и поведение это свойство никак не влияет.

В общем, мне нужно совсем другое: возможность активировать/деактивировать GroupBox. Чтобы когда Groupbox неактивен, его заголовок, рамка и все внутренние элементы становились серенькими и не реагировали на действия пользователя. Когда активный - все становилось полноцветным, все внутренние элементы активны.

Как этого добиться? Неужели нужно пилить отдельный тип с нуля?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

Ответ на: комментарий от hippi90

Мда, что-то я никак к документации QML не могу привыкнуть. В самом Qt раздел «List of All Members for ...» показывает все свойства/методы/сигналы.

А в QML похоже только уникальные свойства, наследуемые не показывает:

List of All Members for GroupBox

This is the complete list of members for GroupBox, including inherited members.

checkable : bool
checked : bool
contentItem : Item
flat : bool
title : string

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от ncuxer

Да, enabled похоже на то что надо. Вот только подчиненные элементы Text визуально неактивными не делает.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Я, конечно налепил:

                Text {
                    id: imitationSpeedLabel
                    text: qsTr('Imitation speed')
                    color: (imitationGroup.enabled ? "black" : "gray")
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.left: parent.left
                    font.pointSize: 14
                }

но это неправильный подход.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Text сам по себе неактивный элемент. Если хочешь покрасить его сереньким, то можешь прописать ему

color: enabled ? “black” : “gray”

ncuxer
()
Ответ на: комментарий от Xintrea

Правильный подход создать свой QML элемент XintreaText и использовать его, если таких элементов больше одного. Умеешь? В отдельный файл.

ncuxer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.