2015-11-19 38 views
5

グループに複数のラジオボタンがありますが、現在チェックされている項目のインデックスを取得する方法はありますか?十分に動作しますが、おそらく標準のQtの機能またはそれを行う方法があるグループのラジオボタンのインデックスを取得

int getCheckedRadioButton(QWidget *w) 
{ 
    int ii = 0; 
    foreach (QRadioButton *button, w->findChildren<QRadioButton*>()) { 
     if (button->isChecked()) { 
      return ii; 
     } 
     ii++; 
    } 
    return -1; 
} 

enter image description here

は、今のところ私はこのコードを使うのか?

答えて

10

これはQButtonGroupの使用例です。

ラジオボタンをQButtonGroupでグループ化していない場合は、グループ化します。各ボタンに対して、QButtonGroup::addButton(button, id)を使用してボタンに連続するIDを割り当てます。ゼロから始まります。

次に、ボタンのインデックスを受け取るには、QButtonGroup::checkedId()を使用します。

Qtデザイナを使用してフォームをデザインする場合、ボタンをグループ化し、コンテキストメニューから[ボタングループに割り当てる]> [新しいボタングループに割り当てる]を選択して、ボタンをグループ化できます。しかし、私はグループ内のボタンにIDを手動で割り当てることはできないと思います。代わりに、setupUIの後にQButtonGroup::setId(button, id)を使用して、自動的に割り当てられたIDを変更します。 (彼らは混乱して、-2からマイナス数えて、デザイナーが注文をどのように正確に選ぶかわからないので、その注文に依存することはお勧めしません)

+0

本当に素晴らしい答えです! upvotesは正義をしていないので、私は明示的にそれを書いてくれてありがとうと思いました:) – waldyrious

+0

優れた答えの上にDitto。初心者にとってQtについてはあまりにも鈍いです。あなたの答えは、私がもっと仕事をするのを妨げました。 –

関連する問題