QGroupBox

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

使用它的最简单方式是创建一个为你所想要的列数(或者行数)和方向的组合框,并且然后创建其它窗口部件时,把这个组合框作为父对象

然而,也可以在构造函数之后改变方向(orientation())和列数(或者行数,columns()),或者忽略所有自动布局支持并且自己来管理所有的这一切。你也可以通过addSpace()把“空白”添加到组合框中

QGroupBox也让你设置标题(title(),通常在构造函数中设置)和标题对齐方式(alignment())

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    QGridLayout *grid = new QGridLayout;
    grid->addWidget(createFirstExclusiveGroup(),0,0);
    grid->addWidget(createSecondExclusiveGroup(),0,1);
    grid->addWidget(createNonExclusiveGroup(),1,0);


    QWidget *widget = new QWidget;
    widget->setLayout(grid);
    widget->resize(480, 320);
    widget->show();
}

QGroupBox *Widget::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 *Widget::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 *Widget::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

posted @   thomas_blog  阅读(497)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示