すべてのラジオボタンのチェックを外す方法はありますか?質問する

すべてのラジオボタンのチェックを外す方法はありますか?質問する

QGroupBox があり、その中に QRadioButton が 2 つあります。特定のケースでは、すべてのラジオ ボタンのチェックを外す必要があります。選択が行われている場合は、これができないようです。これを実行する方法をご存知ですか。または、目的の結果を得るには、非表示のラジオ ボタンを追加して、そのラジオ ボタンのみをチェックする必要がありますか。

ベストアンサー1

この効果を実現するには、すべてのラジオ ボタンの自動排他性を一時的にオフにして、チェックを外してから再度オンにします。

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

使用を検討してみてはいかがでしょうかQボタングループ整理整頓するために、ボタンを自分で繰り返し処理するのではなく、ボタンのグループ全体の排他性をオン/オフにすることができます。

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

ただし、他の回答で述べられているように、ラジオ ボタンは実際にはこの種の用途には適していないため、代わりにチェックボックスの使用を検討することをお勧めします。

おすすめ記事