【Qt】【QRadioButton】排他的なラジオボタンの配置

f:id:dNaga392:20141029075042p:plain

QRadioButtonで複数の排他的なラジオボタングループを作りたく
調べているとQVBoxLayoutでグループ化ができるとのこと。

でもでも階層構造にしてもすべて同じグループになっちゃうし、
QButtonGroupはQWidget継承してないしでどうすればいいんだ~?
とさらに調べてみたらQGroupBoxでまとめるといいみたい。

// 配置先をparentとした
QWidget* widget = new QWidget(parent);
Q_CHECK_PTR(widget);
widget->setObjectName("widgetW");
widget->setGeometry(QRect(20, 30, 260, 270));
QVBoxLayout* vboxLayout1 = new QVBoxLayout(widget);
Q_CHECK_PTR(vboxLayout1);
vboxLayout1->setObjectName("vboxLayout1");
QGridLayout* gridLayout = new QGridLayout();
Q_CHECK_PTR(gridLayout);
gridLayout->setObjectName("gridLayout");

QRadioButton* radio1 =new QRadioButton(widget);
radio1->setObjectName("radio1");
radio1->setText("Radio1");
QRadioButton* radio2 =new QRadioButton(widget);
radio2->setObjectName("radio2");
radio2->setText("Radio2");
QVBoxLayout* vboxLayoutG1 = new QVBoxLayout();
vboxLayoutG1->setObjectName("vboxLayoutG1");
vboxLayoutG1->addWidget(radio1);
vboxLayoutG1->addWidget(radio2);
QGroupBox *group1 =new QGroupBox(widget);
group1->setLayout(vboxLayoutG1);
gridLayout->addWidget(group1, 0, 0);

QRadioButton* radio3 =new QRadioButton(widget);
radio3->setObjectName("radio3");
radio3->setText("Radio3");
QRadioButton* radio4 =new QRadioButton(widget);
radio4->setObjectName("radio4");
radio4->setText("Radio4");
QVBoxLayout* vboxLayoutG2 = new QVBoxLayout();
vboxLayoutG2->setObjectName("vboxLayoutG2");
vboxLayoutG2->addWidget(radio3);
vboxLayoutG2->addWidget(radio4);
QGroupBox *group2 =new QGroupBox(widget);
group2->setLayout(vboxLayoutG2);
gridLayout->addWidget(group2, 1, 0);

QRadioButton* radio5 =new QRadioButton(widget);
radio5->setObjectName("radio5");
radio5->setText("Radio5");
QRadioButton* radio6 =new QRadioButton(widget);
radio6->setObjectName("radio6");
radio6->setText("Radio6");
QVBoxLayout* vboxLayoutG3 = new QVBoxLayout();
vboxLayoutG3->setObjectName("vboxLayoutG3");
vboxLayoutG3->addWidget(radio5);
vboxLayoutG3->addWidget(radio6);
QGroupBox *group3 =new QGroupBox(widget);
group3->setLayout(vboxLayoutG3);
vboxLayoutG2->addWidget(group3);
vboxLayout1->addLayout(gridLayout);
  • 参考

Group Box Example | Documentation | Qt Project

QRadioButtonの使い方(その2) | .COM-POUND