QGroupBox窗口部件提供了一个有标题的组合框。
组合框提供一个框架、一个标题和一个键盘快捷键,并且显示在它里面地其它不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子窗口部件,并且子窗口部件将会排列在这个框架中地一个数组中。
官方example:
- //mainwindow.h
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #include <QtGui>
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
- public:
- MainWindow(QWidget *parent = 0);
- ~MainWindow();
- private:
- QGroupBox *createFirstExclusiveGroup();
- QGroupBox *createSecondExclusiveGroup();
- QGroupBox *createNonExclusiveGroup();
- QGroupBox *createPushButtonGroup();
- };
- #endif // MAINWINDOW_H
- #include "mainwindow.h"
- #include <QtGui>
- #include <QWidget>
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- {
- QGridLayout *grid = new QGridLayout;
- grid->addWidget(createFirstExclusiveGroup(),0,0);
- grid->addWidget(createSecondExclusiveGroup(),0,1);
- grid->addWidget(createNonExclusiveGroup(),1,0);
- grid->addWidget(createPushButtonGroup(),1,1);
- QWidget *widget = new QWidget;
- widget->setLayout(grid);
- widget->resize(480, 320);
- setCentralWidget(widget);
- setWindowTitle(tr("Group Boxes"));
- }
- MainWindow::~MainWindow()
- {
- }
- QGroupBox *MainWindow::createFirstExclusiveGroup()
- {
- QGroupBox *groupBox = new QGroupBox(tr("Exclusive Radio Buttons"));
- QRadioButton *radio1 = new QRadioButton(tr("&Radio button 1"));
- QRadioButton *radio2 = new QRadioButton(tr("&Radio button 2"));
- QRadioButton *radio3 = new QRadioButton(tr("&Radio 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 *MainWindow::createSecondExclusiveGroup()
- {
- QGroupBox *groupBox = new QGroupBox(tr("&Exclusive Radio Buttons"));
- groupBox->setCheckable(true);
- groupBox->setChecked(true);
- QRadioButton *radio1 = new QRadioButton(tr("&Radio button1"));
- QRadioButton *radio2 = new QRadioButton(tr("&Radio button2"));
- QRadioButton *radio3 = new QRadioButton(tr("&Radio button3"));
- radio1->setChecked(true); //使控件可选择
- QCheckBox *checkBox = new QCheckBox(tr("&Independent 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 *MainWindow::createNonExclusiveGroup()
- {
- QGroupBox *groupBox = new QGroupBox(tr("No-Exclusive Checkboxes"));
- groupBox->setFlat(true);
- QCheckBox *checkBox1 = new QCheckBox(tr("&Checkbox 1"));
- QCheckBox *checkBox2 = new QCheckBox(tr("&Checkbox 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;
- }
- QGroupBox *MainWindow::createPushButtonGroup()
- {
- QGroupBox *groupBox = new QGroupBox(tr("&Push Button"));
- groupBox->setCheckable(true);
- groupBox->setChecked(true);
- QPushButton *pushButton = new QPushButton(tr("&Normal Button"));
- QPushButton *toggleButton = new QPushButton(tr("&Toggle Button"));
- toggleButton->setCheckable(true);
- toggleButton->setChecked(true);
- QPushButton *flatButton = new QPushButton(tr("&Flat Button"));
- flatButton->setFlat(true);
- QPushButton *popupButton = new QPushButton(tr("&Popup Button"));
- QMenu *menu = new QMenu(this);
- menu->addAction(tr("&First Item"));
- menu->addAction(tr("&Second Item"));
- menu->addAction(tr("&Third Item"));
- menu->addAction(tr("&Forth Item"));
- popupButton->setMenu(menu);
- QAction *newAction = menu->addAction(tr("Submenu"));
- QMenu *subMenu = new QMenu(tr("Popup Submenu"));
- subMenu->addAction(tr("Item 1"));
- subMenu->addAction(tr("Item 2"));
- subMenu->addAction(tr("Item 3"));
- newAction->setMenu(subMenu);
- QVBoxLayout *vbox = new QVBoxLayout;
- vbox->addWidget(pushButton);
- vbox->addWidget(toggleButton);
- vbox->addWidget(flatButton);
- vbox->addWidget(popupButton);
- groupBox->setLayout(vbox);
- return groupBox;
- }