У меня есть, например, четыре QRadioButton
с rb1
, rb2
, rb3
, rb4
. Я установил rb1
и rb3
проверено:
rb1->setChecked(true);
rb3->setChecked(true);
Кроме того, у меня есть четыре QButtonGroup
s: bg12
, bg34
, bg13
и bg24
, и я делаю первые два неисключительных (они по умолчанию):
bg13->setExclusive(false);
bg24->setExclusive(false);
Первый случай: я добавляю rb1
и rb2
к bg12
, а rb3
и rb4
к bg34
. Затем я добавляю все кнопки в макет сетки, показываю виджет и все такое, все работает как положено (две кнопки активны, а кнопка в одном ряду исключает другую в своем ряду).
Второй случай: я добавляю rb1
и rb2
к bg12
, rb3
и rb4
к bg34
. Затем я добавляю rb1
и rb3
к bg13
и rb2
и rb4
к bg24
. Теперь это работает не так, как я ожидал, все они ведут себя как «свободные» кнопки, и я могу отметить / снять любую из них. Итак, что я делаю не так?
Upd: Я также попробовал это с QPushButton
s (так, без исключений и тому подобного), и это просто выглядит, если кнопка уже в QButtonGroup
, и я добавляю он делает еще один, он больше не принадлежит первому: (
Полагаю, вы можете задаться вопросом, зачем мне делать такие странные вещи - я объясню. Я хочу сохранить вектор пар QRadioButton
с, и кнопка в каждой паре должна исключать другую в своей паре (они представляют два исключительных состояния), поэтому я хочу сгруппировать кнопки в каждой паре в эксклюзивном QButtonGroup
(например, bg12
и bg34
в примере), а также добавьте, например, все первые кнопки каждой пары в другую QButtonGroup
(не исключающую, например bg13
из примера) и присвойте ей идентификатор , Таким образом, я смогу обрабатывать изменения состояния с помощью одного из сигналов QButtonGroup
, которые нам предоставляет класс и идентификатор. Может быть, есть более простой способ?