Есть ли способ, чтобы все кнопки радиона были отключены

У меня есть QGroupBox с парой QRadioButtons внутри него, и в некоторых случаях я хочу, чтобы все переключатели были отключены. Кажется, что это невозможно, когда выбор сделан. Знаете ли вы, как я мог бы это сделать, или я должен добавить скрытую радиокнопку и проверить ее, чтобы получить желаемый результат.

 Thomas13 нояб. 2009 г., 21:19
Это противоречит принципу радио кнопок. По определению, всегда выбирается ровно один. Зачем тебе это нужно?
 yan bellavance16 нояб. 2009 г., 17:47
Именно поэтому мне это нужно.
 Caleb Huitt - cjhuitt14 нояб. 2009 г., 15:00
@Thomas: Это обычно идет вразрез с определением переключателей, но иногда может быть полезно. Рассмотрим мастера, где пользовательдолжен сделать взаимоисключающий выбор. Вы можете представить их с помощью переключателей, но по умолчанию их нет. Теперь представьте, что они вернулись на предыдущую страницу и изменили что-то, что означает, что вам нужно сбросить оставшиеся данные, в том числе установить переключатели на ничего не выбранное снова. (В идеале, волшебник нене может продвигаться, пока не будет выбрана одна из переключателей.)

Ответы на вопрос(1)

Решение Вопроса

временно отключив автоэксклюзию для всех своих радиокнопок, сняв флажки и затем снова включив их:

QRadioButton* rbutton1 = new QRadioButton("Option 1", parent);
// ... other code ...
rbutton1->setAutoExclusive(false);
rbutton1->setChecked(false);
rbutton1->setAutoExclusive(true);

Вы можете посмотреть на использованиеQButtonGroup чтобы держать вещи в порядке,Позвольте вам включать и выключать эксклюзивность для всей группы кнопок вместо того, чтобы выполнять их итерацию самостоятельно:

// where rbuttons are QRadioButtons with appropriate parent widgets
// (QButtonGroup doesn't draw or layout anything, it's just a container class)
QButtonGroup* group = new QButtonGroup(parent);
group->addButton(rbutton1);
group->addButton(rbutton2);
group->addButton(rbutton3);

// ... other code ...

QAbstractButton* checked = group->checkedButton();
if (checked)
{
    group->setExclusive(false);
    checked->setChecked(false);
    group->setExclusive(true);
}

Однако, как уже говорилось в других ответах, вы можете использовать вместо этого флажки, поскольку переключатели неЭто действительно предназначено для такого рода вещей.

 Pierluigi22 нояб. 2013 г., 17:23
Это поведение все еще необходимо, если вместо переключателей вы группируете набор кнопок.
 Xavier Geoffrey24 нояб. 2015 г., 19:56
@richardwb, когда я проверяю->setChecked (false), выбранная кнопка исчезает с экрана. Как это работает для вас?

Ваш ответ на вопрос