Russian Qt Forum
Ноябрь 22, 2024, 00:29
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Установка QButtonGroup для набора QRadioButton
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Установка QButtonGroup для набора QRadioButton (Прочитано 5199 раз)
DarkHobbit
Самовар
Offline
Сообщений: 197
Установка QButtonGroup для набора QRadioButton
«
:
Ноябрь 21, 2021, 01:06 »
Доброй ночи.
Задолбавшись перебирать во время всяких getData/setData вручную экземпляры QRadioButton, я решил поискать, нет ли для Qt кнопочных контейнеров, похожих на TRadioGroup из Delphi. К моему удивлению, обнаружился штатный класс QButtonGroup. Но я не совсем понял, как с ним работать:
1) В палитре компонентов Qt Creator 5.0.2 я этого класса не обнаружил. Да, программно понятно, как его добавить, как добавить в него кнопки. Но - только программно?
2) есть метод checkedId(), позволяющий получить номер выбранной кнопки. А где же обратная операция, какой-нибудь setCheckedId() или checkButtonById()?
Если первый пункт, в принципе, терпим, то второй повергает в уныние...
«
Последнее редактирование: Ноябрь 21, 2021, 14:11 от DarkHobbit
»
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Установка QButtonGroup
«
Ответ #1 :
Ноябрь 21, 2021, 10:28 »
Есть QButtonGroup::button для получения кнопки по ID и QAbstractButton::setChecked для чека/снятия чека у кнопки
Для удобства можно реализовать свою функцию по выбору кнопки либо унаследоваться от QButtonGroup и оформить её в виде метода
В дизайнере вроде как да, отсутствует возможность задать QButtonGroup. Но можно объединять кнопки в QGroupBox, где для каждой группы будет свой механизм выбора текущей радиокнопки
Записан
DarkHobbit
Самовар
Offline
Сообщений: 197
Re: Установка QButtonGroup
«
Ответ #2 :
Ноябрь 21, 2021, 10:53 »
Цитата: __Heaven__ от Ноябрь 21, 2021, 10:28
Есть QButtonGroup::button для получения кнопки по ID и QAbstractButton::setChecked для чека/снятия чека у кнопки
Это я видел, да. Но тогда...
Цитировать
Для удобства можно реализовать свою функцию по выбору кнопки либо унаследоваться от QButtonGroup и оформить её в виде метода
...в итоге мы получаем, что QButtonGroup по количеству телодвижений ненамного лучше обычного QGroupBox. Для которого тоже можно написать пару функций-хелперов. И он вставляется дизайнером. И более того, у него ещё есть заголовок, которого у QButtonGroup, если не ошибаюсь, нет.
Ну да, в QButtonGroup ПОЛОВИНА работы сделана. Что мешало кутешникам сделать вторую половину? Странно это, обычно у них всё строго симметрично и доделано. Не похоже на них. Я думал, это я в глаза долблюсь, а оказывается, так было задумано...
Спасибо.
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
DarkHobbit
Самовар
Offline
Сообщений: 197
Re: Установка QButtonGroup
«
Ответ #3 :
Ноябрь 21, 2021, 11:31 »
В принципе button(id)->setChecked(true) можно вызвать одной строкой, только это небезопасная конструкция, где-то выше должна быть проверка, что 0<=id<Nbuttons. Иначе может придти живительный сегфолт.
В общем, жить можно, но слегка противно. В классе не хватает одного явно напрашивающегося метода из трёх строчек. Повторюсь, есть ощущение недоделанности, на кутешников это непохоже.
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Установка QButtonGroup
«
Ответ #4 :
Ноябрь 21, 2021, 11:33 »
Если кнопки находятся на панели QToolBar, то уместнее будет QButtonGroup
Записан
DarkHobbit
Самовар
Offline
Сообщений: 197
Re: Установка QButtonGroup
«
Ответ #5 :
Ноябрь 21, 2021, 11:59 »
Ну я писал про QRadioButton, их я что-то не видел, чтобы на тулбарах размещали. (Да, если я этого не видел, этого не значит, что этого нет.)
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Установка QButtonGroup
«
Ответ #6 :
Ноябрь 21, 2021, 13:17 »
Цитата: DarkHobbit от Ноябрь 21, 2021, 01:06
1) В палитре компонентов Qt Creator 5.0.2 я этого класса не обнаружил. Да, программно понятно, как его добавить, как добавить в него кнопки. Но - только программно?
выбрать нужные компоненты на виджете — правая кнопка — assign button group
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
DarkHobbit
Самовар
Offline
Сообщений: 197
Re: Установка QButtonGroup
«
Ответ #7 :
Ноябрь 21, 2021, 14:10 »
Цитата: kambala от Ноябрь 21, 2021, 13:17
выбрать нужные компоненты на виджете — правая кнопка — assign button group
"Назначить группу кнопок"? Ага, нашёл. Сам получившийся в итоге QButtonGroup, правда, в дереве виджетов долго искал, нашёл в самом низу. В общем, неинтуитивно.
А идентификаторы кнопок при этом дизайнером же можно как-то задать? У меня по умолчанию получились -2, -3, -4.
Понятно, что в программе их можно через setId скорректировать. Но тогда опять возникает вопрос, стоит ли овчинка выделки. Можно уж тогда и QButtonGroup в конструкторе после setupUi создать, и всё в него сразу с нужными id добавить. А то и опять-таки вернуться к варианту с QGroupBox...
P.S. Но в принципе заработало, хоть и более громоздко, чем хотелось бы. Использовал в
последнем коммите
.
«
Последнее редактирование: Ноябрь 21, 2021, 22:34 от DarkHobbit
»
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...