У меня есть 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
Будет ли работать над добавлением переключателя с меткой типа "Нет"?