QT常用控件之QVBoxLayout,QRadioButton,QCheckBox,QMenu,QAction

QT常用控件的组合

#include "mainwindow.h"
#include <QGridLayout>
#include <QVBoxLayout>
#include <QWidget>
#include <QRadioButton>//单选框
#include <QCheckBox>//复选框
#include <QPushButton>
#include <QMenu>
#include <QAction>
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窗口部件提供了一个有标题的组合框。组合框提供一个框架、一个标题和一个键盘快捷键,
 * 并且显示在它里面地其它不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子
 * 窗口部件,并且子窗口部件将会排列在这个框架中地一个数组中。
*/
QGroupBox *MainWindow::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 *MainWindow::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 *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("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;
}

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("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类提供了一个可以同时出现在菜单和工具条上的抽象用户界面操作
    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;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值