Есть ли способ, чтобы все кнопки радиона были отключены - PullRequest
14 голосов
/ 13 ноября 2009

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

1 Ответ

30 голосов
/ 14 ноября 2009

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

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);
}

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

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