Группировка одного QRadioButton в несколько QButtonGroups - PullRequest
2 голосов
/ 20 августа 2011

У меня есть, например, четыре 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, которые нам предоставляет класс и идентификатор. Может быть, есть более простой способ?

1 Ответ

2 голосов
/ 20 августа 2011

QAbstractButton содержит один QButtonGroup в качестве члена, поэтому кнопка может принадлежать только одной группе.

Но для неисключительной группы вы можете использовать QSignalMapper s вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...