Есть ли способ отключить все кнопки радиосвязи?

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

Ответ 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 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);
}

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

Ответ 2

Будет ли работать над добавлением переключателя с меткой типа "Нет"?