2009-11-13 27 views
11

QRadioButtonをいくつか含むQGroupBoxがありますが、ラジオボタンをすべてオフにしたい場合もあります。選択がなされたときにこれが不可能であると思われる。私がこれを行う方法を知っていますか、隠したラジオボタンを追加して、希望の結果を得るためにonenをチェックするべきですか?ラジオボタンをすべてオフにする方法はありますか?

+3

これはラジオボタンの原則に反します。定義により、常に1つが選択されます。なぜこれが必要ですか? – Thomas

+4

@Thomas:通常、ラジオボタンの定義に反しますが、時には便利です。ユーザー_must_が相互排他的な選択を行うウィザードを考えてみましょう。ラジオボタンで表示できますが、デフォルトはありません。今度は、前のページに戻って、ラジオボタンを何も選択しないようにするなど、残りのデータをリセットする必要があるということを変更したとします。 (理想的には、どちらかのラジオボタンが選択されるまで、ウィザードを進めることはできません)。 –

+2

これが私が必要な理由です。 –

答えて

25

あなたは一時的に、すべてのラジオボタンの自動独占権をオフにし、それらをオフにし、その後にそれらを折り返すことにより、この効果を達成することができます:あなたは整然と物事を保つためにQButtonGroupを使って見たいかもしれません

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

、それはあなたがそれらを介して自分自身を反復するのではなく、ボタンのグループ全体のためにオンとオフの独占を回してもらおう:他の回答を述べてきたように

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

しかし、あなたが代わりにチェックボックスを使用して検討する必要があります、ので、無線ボタンは本当にこの種のものではありません。

+0

この動作は、ラジオボタンの代わりにプッシュボタンのセットをグループ化する場合にも必要です。 – Pierluigi

+0

@richardwbチェック - > setChecked(false)を実行すると、選択されたボタンが画面から消えています。どのようにあなたのために働いていますか? –

2

"None"のようなラベルの付いたラジオボタンを追加することはできますか?

関連する問題