昨日はQRadioButtonの使い方について簡単に紹介した。 今日は、複数の質問にそれぞれラジオボタンで回答するようなGUIの作り方を説明する。 まず、QRadioButtonのインスタンスを複数作る。
QWidget *win=new QWidget();
QVBoxLayout *layout=new QVBoxLayout(win);
QLabel *label1=new QLabel(QObject::tr("質問1"),win);
QRadioButton *button11=new QRadioButton("回答1",win);
QRadioButton *button12=new QRadioButton("回答2",win);
layout->addWidget(label1);
layout->addWidget(button11);
layout->addWidget(button12);
QLabel *label2=new QLabel(QObject::tr("質問2"),win);
QRadioButton *button21=new QRadioButton("回答1",win);
QRadioButton *button22=new QRadioButton("回答2",win);
layout->addWidget(label2);
layout->addWidget(button21);
layout->addWidget(button22);
win->setLayout(layout);
win->show();
これだと、すべてが1つのグループになっていて、この6つの中のうち1つしか選択することは出来ない。

そこで登場するのがQButtonGroup。これは複数のラジオボタンを1まとめにしてグループを作るもの。このグループに入っているボタンは、そのグループ内で1つしか選択できないが、他のグループのボタンは別に選択することができる。
QButtonGroupのインスタンスを作り、各ボタンをaddButtonするだけ。
QWidget *win=new QWidget();
QVBoxLayout *layout=new QVBoxLayout(win);
QButtonGroup *group1=new QButtonGroup(win);
QLabel *label1=new QLabel(QObject::tr("質問1"),win);
QRadioButton *button11=new QRadioButton("回答1",win);
QRadioButton *button12=new QRadioButton("回答2",win);
group1->addButton(button11);
group1->addButton(button12);
layout->addWidget(label1);
layout->addWidget(button11);
layout->addWidget(button12);
QButtonGroup *group2=new QButtonGroup(win);
QLabel *label2=new QLabel(QObject::tr("質問2"),win);
QRadioButton *button21=new QRadioButton("回答1",win);
QRadioButton *button22=new QRadioButton("回答2",win);
group2->addButton(button21);
group2->addButton(button22);
layout->addWidget(label2);
layout->addWidget(button21);
layout->addWidget(button22);
win->setLayout(layout);
win->show();
