QGroupBox窗口部件提供了一个有标题的组合框 组合框提供一个框架、一个标题和一个键盘快捷键,并且显示在它里面地其它不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子窗口部件,并且子窗口部件将会排列在这个框架中地一个数组中
使用它的最简单方式是创建一个为你所想要的列数(或者行数)和方向的组合框,并且然后创建其它窗口部件时,把这个组合框作为父对象
然而,也可以在构造函数之后改变方向(orientation())和列数(或者行数,columns()),或者忽略所有自动布局支持并且自己来管理所有的这一切。你也可以通过addSpace()把“空白”添加到组合框中
QGroupBox也让你设置标题(title(),通常在构造函数中设置)和标题对齐方式(alignment())
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { QGridLayout *grid = new QGridLayout; grid->addWidget(createFirstExclusiveGroup(),0,0); grid->addWidget(createSecondExclusiveGroup(),0,1); grid->addWidget(createNonExclusiveGroup(),1,0); QWidget *widget = new QWidget; widget->setLayout(grid); widget->resize(480, 320); widget->show(); } QGroupBox *Widget::createFirstExclusiveGroup() { QGroupBox *groupBox = new QGroupBox(tr("Exclusive Radio Buttons")); QRadioButton *radio1 = new QRadioButton(tr("&Radio button 1")); QRadioButton *radio2 = new QRadioButton(tr("R&adio button 2")); QRadioButton *radio3 = new QRadioButton(tr("Ra&dio button 3")); radio1->setChecked(true); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(radio1); vbox->addWidget(radio2); vbox->addWidget(radio3); vbox->addStretch(1); groupBox->setLayout(vbox); return groupBox; } QGroupBox *Widget::createSecondExclusiveGroup() { QGroupBox *groupBox = new QGroupBox(tr("E&xclusive Radio Buttons")); groupBox->setCheckable(true); groupBox->setChecked(true); QRadioButton *radio1 = new QRadioButton(tr("Rad&io button1")); QRadioButton *radio2 = new QRadioButton(tr("Radi&o buttoon2")); QRadioButton *radio3 = new QRadioButton(tr("Radio &button3")); radio1->setChecked(true); QCheckBox *checkBox = new QCheckBox(tr("Ind&ependent checkbox")); checkBox->setChecked(true); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(radio1); vbox->addWidget(radio2); vbox->addWidget(radio3); vbox->addWidget(checkBox); groupBox->setLayout(vbox); return groupBox; } QGroupBox *Widget::createNonExclusiveGroup() { QGroupBox *groupBox = new QGroupBox(tr("No-Exclusive Checkboxes")); groupBox->setFlat(true); QCheckBox *checkBox1 = new QCheckBox(tr("&Checkbox 1")); QCheckBox *checkBox2 = new QCheckBox(tr("C&heckbox 2")); checkBox2->setChecked(true); QCheckBox *tristateBox = new QCheckBox(tr("Tri-&state buttton")); tristateBox->setTristate(true);//是否启用三种状态切换 tristateBox->setCheckState(Qt::PartiallyChecked);//介于Qt::Unchecked和Qt::Checked之间 QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(checkBox1); vbox->addWidget(checkBox2); vbox->addWidget(tristateBox); vbox->addStretch(1); groupBox->setLayout(vbox); return groupBox; }