Qt之容器控件(QGroupBox)

简述

QGroupBox小部件提供带有标题的组框框架。

一个组框提供一个框架,一个标题,一个快捷键,并在其内部显示其他各种小部件。键盘快捷键将键盘焦点移到组框的子窗口小部件之一。

功能描述

QGroupBox还允许您设置标题(通常在构造函数中设置)和标题的对齐方式。组框可以被选中。可选中组框中的子窗口小部件是否启用,取决于是否选中了该组框。

您可以通过启用flat属性来最小化组框的空间消耗。在大多数样式中,启用此属性会导致删除框架的左,右和底边缘。

QGroupBox不会自动布置子窗口小部件。

QGroupBox框通常用于将QCheckBoxes和QRadioButtons组织到互斥组中。

使用

效果

Qt之容器控件(QGroupBox)_第1张图片

源码

    QGroupBox *groupBox_0 = new QGroupBox("互斥单选按钮组");
    QRadioButton *radioBtn_0 = new QRadioButton("&Radio Button 1");
    QRadioButton *radioBtn_1 = new QRadioButton("R&adio Button 2");
    QRadioButton *radioBtn_2 = new QRadioButton("Ra&dio Button 3");
    QVBoxLayout *vLayout_0 = new QVBoxLayout;
    vLayout_0->addWidget(radioBtn_0);
    vLayout_0->addWidget(radioBtn_1);
    vLayout_0->addWidget(radioBtn_2);
    groupBox_0->setLayout(vLayout_0);

    QGroupBox *groupBox_1 = new QGroupBox("非互斥多选按钮组");
    QCheckBox *checkBox_0 = new QCheckBox("&Checkbox 1");
    QCheckBox *checkBox_1 = new QCheckBox("C&heckbox 2");
    QCheckBox *checkBox_2 = new QCheckBox("&Tri-state Button");
    checkBox_2->setTristate(true);
    QVBoxLayout *vLayout_1 = new QVBoxLayout;
    vLayout_1->addWidget(checkBox_0);
    vLayout_1->addWidget(checkBox_1);
    vLayout_1->addWidget(checkBox_2);
    groupBox_1->setLayout(vLayout_1);

    QGroupBox *groupBox_2 = new QGroupBox("可选互斥单选按钮组");
    groupBox_2->setCheckable(true);
    QRadioButton *radioBtn_3 = new QRadioButton("Radio Button 1");
    QRadioButton *radioBtn_4 = new QRadioButton("Radio Button 2");
    QRadioButton *radioBtn_5 = new QRadioButton("Radio Button 3");
    QCheckBox *checkBox_3 = new QCheckBox("independent checkbox");
    checkBox_3->setChecked(true);
    QVBoxLayout *vLayout_2 = new QVBoxLayout;
    vLayout_2->addWidget(radioBtn_3);
    vLayout_2->addWidget(radioBtn_4);
    vLayout_2->addWidget(radioBtn_5);
    vLayout_2->addWidget(checkBox_3);
    groupBox_2->setLayout(vLayout_2);

    QGroupBox *groupBox_3 = new QGroupBox("可选普通按钮组");
    groupBox_3->setCheckable(true);
    groupBox_3->setChecked(true);
    QPushButton *pushBtn_0 = new QPushButton("&Normal Button");
    QPushButton *pushBtn_1 = new QPushButton("&Toggle Button");
    pushBtn_1->setCheckable(true);
    pushBtn_1->setChecked(true);
    QPushButton *pushBtn_2 = new QPushButton("&Flat Button");
    pushBtn_2->setFlat(true);
    QPushButton *pushBtn_3 = new QPushButton("Popp 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"));
    pushBtn_3->setMenu(menu);
    QVBoxLayout *vLayout_3 = new QVBoxLayout;
    vLayout_3->addWidget(pushBtn_0);
    vLayout_3->addWidget(pushBtn_1);
    vLayout_3->addWidget(pushBtn_2);
    vLayout_3->addWidget(pushBtn_3);
    groupBox_3->setLayout(vLayout_3);


    QGridLayout *gridLayout = new QGridLayout;
    gridLayout->addWidget(groupBox_0, 0, 0, 1, 1);
    gridLayout->addWidget(groupBox_1, 0, 1, 1, 1);
    gridLayout->addWidget(groupBox_2, 1, 0, 1, 1);
    gridLayout->addWidget(groupBox_3, 1, 1, 1, 1);

    this->setLayout(gridLayout);

要点提示: QGroupBox不能直接添加控件,必须通过布局管理器来添加。

常用设置

设置组框的标题对齐方式

groupBox_0->setAlignment(Qt::AlignLeft);
groupBox_1->setAlignment(Qt::AlignRight);
groupBox_2->setAlignment(Qt::AlignHCenter);

上面是三种对齐方式,注意,QGroupBox只能用这常量。

效果

Qt之容器控件(QGroupBox)_第2张图片

设置可选

    groupBox_3->setCheckable(true);
    groupBox_3->setChecked(true);

效果

Qt之容器控件(QGroupBox)_第3张图片

设置flat模式

分组框通常由周围的框框和顶部的标题组成。如果启用此属性,则在大多数样式中仅绘制框框的顶部;否则,将绘制整个框框。

groupBox_0->setFlat(true);

效果

Qt之容器控件(QGroupBox)_第4张图片

设置标题

标题可以通过构造函数设置,也可以单独用函数设置

QGroupBox *groupBox_0 = new QGroupBox("组框1");
//or
groupBox_0->setTitle("组框1");

属性获取

获取标题

QString groupBoxTitle = groupBox_0->title()

信号槽

信号

名称 含义
clicked 点击(使用setChecked时不触发)
toggled 翻转(on is true;otherwise,it is false)

名称 含义
setChecked 设置选中

引用

[1] Qt助手

你可能感兴趣的:(Qt基础)