昨日は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();