复选框的使用 QgroupBox

复选矿的使用 QgroupBox

/*****************************************************/

#ifndef WINDOW_H

#define WINDOW_H

#include <QWidget>

QT_BEGIN_NAMESPACE

class QGroupBox;

// 上一句提前声明(forward declarations)我们实现这个对话框要用到的类

//这样就不必再包括它的头文件

QT_END_NAMESPACE

 

class Window : public QWidget

{

Q_OBJECT  //Q_OBJECT对所有的类都是必要的,它定义了信号和槽

public:

Window(QWidget *parent = 0);// parent = 0新的窗口部件将是一个顶级部件,

//否则他将是parent的子部件,被parent的几何形状所限。

 

 private:

QGroupBox *createFirstExclusiveGroup();

QGroupBox *createSecondExclusiveGroup();

QGroupBox *createNonExclusiveGroup();

QGroupBox *createPushButtonGroup();

};

#endif

/***********************************************************/

#include <QtGui>

#include "window.h"

 

Window::Window(QWidget *parent)

: QWidget(parent)

{

QGridLayout *grid = new QGridLayout;//网络布局

grid->addWidget(createFirstExclusiveGroup(), 0, 0);

//添加复选框到(00)位置

grid->addWidget(createSecondExclusiveGroup(), 1, 0);

grid->addWidget(createNonExclusiveGroup(), 0, 1);

grid->addWidget(createPushButtonGroup(), 1, 1);

setLayout(grid);//使布局管理器grid成为成为当前部件的布局

setWindowTitle(tr("Group Boxes"));//窗口标题

resize(480, 320);//设置窗口大小

}

//! [0]

//! [1]

QGroupBox *Window::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);// radio1默认使能

//! [1] //! [3]

QVBoxLayout *vbox = new QVBoxLayout;//纵向布局管理器

vbox->addWidget(radio1);

vbox->addWidget(radio2);

vbox->addWidget(radio3);

// spacer项目(或者叫“stretch”),它占满按钮下方的空间,

//确保这些按钮处在他们所在布局的上方。

vbox->addStretch(1);

groupBox->setLayout(vbox);

//! [2]

return groupBox;

}

//! [3]

//! [4]

QGroupBox *Window::createSecondExclusiveGroup()

{

QGroupBox *groupBox = new QGroupBox(tr("E&xclusive Radio Buttons"));

groupBox->setCheckable(true);//组框使能选择钮开启

//The second group box is itself checkable

groupBox->setChecked(false);//初始化使能状态

//声明三个单选按钮,任意时刻只有一个被选中

QRadioButton *radio1 = new QRadioButton(tr("Rad&io button 1"));

QRadioButton *radio2 = new QRadioButton(tr("Radi&o button 2"));

QRadioButton *radio3 = new QRadioButton(tr("Radio &button 3"));

radio1->setChecked(true); // radio1默认使能

QCheckBox *checkBox = new QCheckBox(tr("Ind&ependent checkbox"));

checkBox->setChecked(true);// 复选框使能

//! [5]

//! [6]

QVBoxLayout *vbox = new QVBoxLayout; //纵向布局管理器

vbox->addWidget(radio1);

vbox->addWidget(radio2);

vbox->addWidget(radio3);

vbox->addWidget(checkBox);

vbox->addStretch(1);

groupBox->setLayout(vbox);

return groupBox;

}

//! [6]

//! [7]

QGroupBox *Window::createNonExclusiveGroup()

{

QGroupBox *groupBox = new QGroupBox(tr("Non-Exclusive Checkboxes"));

groupBox->setFlat(true);//平面组框

//! [7]

//! [8]

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 button"));

tristateBox->setTristate(true);//三态使能

tristateBox->setCheckState(Qt::PartiallyChecked);

//partially checked.介于Qt::UncheckedQt::Checked之间

//! [9]

QVBoxLayout *vbox = new QVBoxLayout;

vbox->addWidget(checkBox1);

vbox->addWidget(checkBox2);

vbox->addWidget(tristateBox);

vbox->addStretch(1);

groupBox->setLayout(vbox);

return groupBox;

}

//! [9]

//! [10]

QGroupBox *Window::createPushButtonGroup()

{

QGroupBox *groupBox = new QGroupBox(tr("&Push Buttons"));

groupBox->setCheckable(true);

groupBox->setChecked(true);

//! [10]

//! [11]

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);//平面按钮

//! [11]

//! [12]

QPushButton *popupButton = new QPushButton(tr("Pop&up Button"));

QMenu *menu = new QMenu(this);

menu->addAction(tr("&First Item"));

menu->addAction(tr("&Second Item"));

menu->addAction(tr("&Third Item"));

menu->addAction(tr("F&ourth 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);

//QAction类提供了一个可以同时出现在菜单和工具条上的抽象用户界面操作

QVBoxLayout *vbox = new QVBoxLayout;

vbox->addWidget(pushButton);

vbox->addWidget(toggleButton);

vbox->addWidget(flatButton);

vbox->addWidget(popupButton);

vbox->addStretch(1);

groupBox->setLayout(vbox);

return groupBox;

}

/*************************************************************/

#include <QApplication>

#include "window.h"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

Window window;

window.show();

return app.exec();//app.exec()的目的是进入消息循环。

}

/*************************************************************************/

 

补充:

1.

QHBoxLayout: 对部件进行从左到右的水平排列(也有从右到左的情况)。
QVBoxLayout
: 对部件进行从上到下的垂直排列。
QgridLayout
: 在一个格子(grid)里进行排列。

2.

QApplication类管理图形用户界面应用程序的控制流和主要设置。

它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值