Russian Qt Forum
Ноябрь 26, 2024, 05:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигналы от QGroupBox и QRadioButton  (Прочитано 5872 раз)
Siarshai
Гость
« : Апрель 23, 2013, 12:55 »

Обычная ситуация: есть QGroupBox, объединяющий несколько (порядка 10) QRadioButton'ов. Переключение QRadioButton'ов по сути изменяет значение одной флаговой переменной, причём линейно (т.е. значение переменной = номер выбранного QRadioButton'а). Но, чтобы изменить переменную, нужно присоединить QRadioButton к слоту объекта, хранящего переменную, и вот проблема: слот не может иметь больше аргументов, чем сигнал, а у clicked() их ноль. В результате приходится создавать 10 connect'ов и столько же слотов у объекта. Это явно избыточно. Неужели нет какого-нибудь красивого способа получить номер кликнутого Button'a и передать его? По идее, этим должен заниматься QGroupBox, но у него вроде ничего такого нет.
Записан
Bepec
Гость
« Ответ #1 : Апрель 23, 2013, 13:03 »

По секрету вам сообщаю, что есть один интересный класс -  QButtonGroup с сигналом void   buttonClicked ( int id ).
И всё.
Записан
mutineer
Гость
« Ответ #2 : Апрель 23, 2013, 13:04 »

Попробуй использовать QSignalMapper
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Апрель 23, 2013, 13:55 »

можно просто в цикле присоединить всё к одному слоту и задать object name (или просто добавить property с числом) каждой кнопке, а потом в слоте считывать соответствующую штуку с sender()'а
Записан

Изучением 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
Bepec
Гость
« Ответ #4 : Апрель 23, 2013, 14:12 »

Зачем мутить с маппером, сигнала и доп параметрами, если есть класс для этих целей, упомянутый мной ранее и включающий вообще всё, что только можно придумать?

Хм, не понимаю я вашей логики однако.
Записан
Siarshai
Гость
« Ответ #5 : Апрель 23, 2013, 14:31 »

Спасибо всем. QButtonGroup, кажется, действительно самый удобный вариант.
Записан
mutineer
Гость
« Ответ #6 : Апрель 23, 2013, 16:46 »

Зачем мутить с маппером, сигнала и доп параметрами, если есть класс для этих целей, упомянутый мной ранее и включающий вообще всё, что только можно придумать?

Хм, не понимаю я вашей логики однако.

Тебе плохо стало от того, что я предложил человеку альтернативу? Может ему маппер в другом случае понадобится
Записан
Bepec
Гость
« Ответ #7 : Апрель 23, 2013, 16:49 »

Да нет. Просто когда просят ручку и дают ручку - это понятно и просто Улыбающийся

А когда вместо ручки дают чернильницу и перо, это уже мне непонятно. (скажем так избыточная сложность)

PS а так конечно альтернативы это хорошо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.12 секунд. Запросов: 23.