Qt之QGroupBox

QGroupBox窗口部件提供了一个有标题的组合框。

     组合框提供一个框架、一个标题和一个键盘快捷键,并且显示在它里面地其它不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子窗口部件,并且子窗口部件将会排列在这个框架中地一个数组中。

    

官方example:

[cpp]  view plain copy
  1. //mainwindow.h  
  2. #ifndef MAINWINDOW_H  
  3. #define MAINWINDOW_H  
  4.   
  5. #include <QtGui>  
  6.   
  7. class MainWindow : public QMainWindow  
  8. {  
  9.     Q_OBJECT  
  10.   
  11. public:  
  12.     MainWindow(QWidget *parent = 0);  
  13.     ~MainWindow();  
  14. private:  
  15.     QGroupBox *createFirstExclusiveGroup();  
  16.     QGroupBox *createSecondExclusiveGroup();  
  17.     QGroupBox *createNonExclusiveGroup();  
  18.     QGroupBox *createPushButtonGroup();  
  19. };  
  20.   
  21. #endif // MAINWINDOW_H  

 

[cpp]  view plain copy
  1. #include "mainwindow.h"  
  2. #include <QtGui>  
  3. #include <QWidget>  
  4.   
  5. MainWindow::MainWindow(QWidget *parent)  
  6.     : QMainWindow(parent)  
  7. {  
  8.     QGridLayout *grid = new QGridLayout;  
  9.     grid->addWidget(createFirstExclusiveGroup(),0,0);  
  10.     grid->addWidget(createSecondExclusiveGroup(),0,1);  
  11.     grid->addWidget(createNonExclusiveGroup(),1,0);  
  12.     grid->addWidget(createPushButtonGroup(),1,1);  
  13.   
  14.     QWidget *widget = new QWidget;  
  15.     widget->setLayout(grid);  
  16.     widget->resize(480, 320);  
  17.     setCentralWidget(widget);  
  18.   
  19.     setWindowTitle(tr("Group Boxes"));  
  20.   
  21. }  
  22.   
  23. MainWindow::~MainWindow()  
  24. {  
  25. }  
  26.   
  27. QGroupBox *MainWindow::createFirstExclusiveGroup()  
  28. {  
  29.     QGroupBox *groupBox = new QGroupBox(tr("Exclusive Radio Buttons"));  
  30.     QRadioButton *radio1 = new QRadioButton(tr("&Radio button 1"));  
  31.     QRadioButton *radio2 = new QRadioButton(tr("&Radio button 2"));  
  32.     QRadioButton *radio3 = new QRadioButton(tr("&Radio button 3"));  
  33.   
  34.     radio1->setChecked(true);  
  35.   
  36.     QVBoxLayout *vbox = new QVBoxLayout;  
  37.     vbox->addWidget(radio1);  
  38.     vbox->addWidget(radio2);  
  39.     vbox->addWidget(radio3);  
  40.     vbox->addStretch(1);   //添加一个弹簧框
  41.     groupBox->setLayout(vbox);  
  42.   
  43.     return groupBox;  
  44. }  
  45.   
  46. QGroupBox *MainWindow::createSecondExclusiveGroup()  
  47. {  
  48.     QGroupBox *groupBox = new QGroupBox(tr("&Exclusive Radio Buttons"));  
  49.     groupBox->setCheckable(true);  
  50.     groupBox->setChecked(true);  
  51.   
  52.     QRadioButton *radio1 = new QRadioButton(tr("&Radio button1"));  
  53.     QRadioButton *radio2 = new QRadioButton(tr("&Radio button2"));  
  54.     QRadioButton *radio3 = new QRadioButton(tr("&Radio button3"));  
  55.     radio1->setChecked(true);  //使控件可选择
  56.     QCheckBox *checkBox = new QCheckBox(tr("&Independent checkbox"));  
  57.     checkBox->setChecked(true); 
  58.   
  59.     QVBoxLayout *vbox = new QVBoxLayout;  
  60.     vbox->addWidget(radio1);  
  61.     vbox->addWidget(radio2);  
  62.     vbox->addWidget(radio3);  
  63.     vbox->addWidget(checkBox);  
  64.     groupBox->setLayout(vbox);  
  65.   
  66.     return groupBox;  
  67. }  
  68.   
  69. QGroupBox *MainWindow::createNonExclusiveGroup()  
  70. {  
  71.     QGroupBox *groupBox = new QGroupBox(tr("No-Exclusive Checkboxes"));  
  72.     groupBox->setFlat(true);  
  73.   
  74.     QCheckBox *checkBox1 = new QCheckBox(tr("&Checkbox 1"));  
  75.     QCheckBox *checkBox2 = new QCheckBox(tr("&Checkbox 2"));  
  76.     checkBox2->setChecked(true);  
  77.     QCheckBox *tristateBox = new QCheckBox(tr("&Tri-state buttton"));  
  78.     tristateBox->setTristate(true);//是否启用三种状态切换  
  79.     tristateBox->setCheckState(Qt::PartiallyChecked);//介于Qt::Unchecked和Qt::Checked之间  
  80.   
  81.     QVBoxLayout *vbox = new QVBoxLayout;  
  82.     vbox->addWidget(checkBox1);  
  83.     vbox->addWidget(checkBox2);  
  84.     vbox->addWidget(tristateBox);  
  85.     vbox->addStretch(1);  
  86.     groupBox->setLayout(vbox);  
  87.     return groupBox;  
  88. }  
  89.   
  90. QGroupBox *MainWindow::createPushButtonGroup()  
  91. {  
  92.     QGroupBox *groupBox = new QGroupBox(tr("&Push Button"));  
  93.     groupBox->setCheckable(true);  
  94.     groupBox->setChecked(true);  
  95.   
  96.     QPushButton *pushButton = new QPushButton(tr("&Normal Button"));  
  97.     QPushButton *toggleButton = new QPushButton(tr("&Toggle Button"));  
  98.     toggleButton->setCheckable(true);  
  99.     toggleButton->setChecked(true);  
  100.   
  101.     QPushButton *flatButton = new QPushButton(tr("&Flat Button"));  
  102.     flatButton->setFlat(true);  
  103.   
  104.     QPushButton *popupButton = new QPushButton(tr("&Popup Button"));  
  105.     QMenu *menu = new QMenu(this);  
  106.     menu->addAction(tr("&First Item"));  
  107.     menu->addAction(tr("&Second Item"));  
  108.     menu->addAction(tr("&Third Item"));  
  109.     menu->addAction(tr("&Forth Item"));  
  110.     popupButton->setMenu(menu);  
  111.   
  112.     QAction *newAction = menu->addAction(tr("Submenu"));  
  113.     QMenu *subMenu = new QMenu(tr("Popup Submenu"));  
  114.     subMenu->addAction(tr("Item 1"));  
  115.     subMenu->addAction(tr("Item 2"));  
  116.     subMenu->addAction(tr("Item 3"));  
  117.     newAction->setMenu(subMenu);  
  118.   
  119.     QVBoxLayout *vbox = new QVBoxLayout;  
  120.     vbox->addWidget(pushButton);  
  121.     vbox->addWidget(toggleButton);  
  122.     vbox->addWidget(flatButton);  
  123.     vbox->addWidget(popupButton);  
  124.     groupBox->setLayout(vbox);  
  125.     return groupBox;  
  126. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值