QT基础:QButtonGroup 按钮组的简单演示

该文介绍了如何在Qt环境中使用QButtonGroup组件来管理QCheckBox,并通过信号和槽函数实现点击和切换事件的响应。QButtonGroup可以设置为单选或多选模式,文中展示了两种模式下的不同行为。同时列出了QButtonGroup的关键信号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QButtonGroup 是一个按钮组,就是将控件进行组合或分组的一个容器,但是它并不在设计师里面可以直接拉出来用

在使用 QButtonGroup 的时候需要引入一下 #include <QButtonGroup>

1、首先用QT创建一个 widget 项目 ,在 UI 中添加三个选择框

在.pro文件中加入一行 CONFIG += console 可以在运行的时候自动打开控制台

 2、在 widget.cpp 中写入代码 

这里创建了两个槽函数,分别绑定 QButtonGroup 中的 buttonClicked 信号和 buttonToggled 信号

#include "widget.h"
#include "ui_widget.h"
#include <QButtonGroup>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QButtonGroup *group = new QButtonGroup(this);
    // 将UI中创建好的选择框全部加入按钮组
    group->addButton(ui->checkBox1);
    group->addButton(ui->checkBox2);
    group->addButton(ui->checkBox3);

    // 选择框加入按钮组以后会默认变成单选  ,在这里可以改成多选
    group->setExclusive(false);


    // 链接创建好的槽函数
    QObject::connect(group,SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(Click(QAbstractButton*)));
    QObject::connect(group,SIGNAL(buttonToggled(QAbstractButton*,bool)),this,SLOT(Toggl(QAbstractButton*,bool)));

}

void Widget::Click(QAbstractButton * but)
{
    // 打印按钮组中被点击的选择框
    qDebug() << "按钮组被点击:" << but << but->isChecked();
}

void Widget::Toggl(QAbstractButton * but, bool check)
{
    // 打印按钮组中被触发的选择框
    qDebug() << "按钮组被触发:" << but << check;
}

Widget::~Widget()
{
    delete ui;
}

3、在选择框是多选的情况下的演示效果:

可以看到,在选中或者取消选中任意一个选择框的时候,都能触发一次 按钮组的 buttonClicked 和 buttonToggled 信号

 

4、// group->setExclusive(false); 把这行注释掉,在选择框是单选的情况下的演示效果:

       可以看到,

选中一个选择框的时候,可以触发按钮组的 buttonClicked 和 buttonToggled 信号

再去选中另一个选择框的时候,第一个选择框的 buttonToggled 的信号又被触发了一次

点击已经选中的选择框的时候,可以单独触发 buttonToggled 信号

 关于 QButtonGroup  的一些信号:
buttonClicked(QAbstractButton *button)
buttonClicked(int id)
buttonPressed(QAbstractButton *button)
buttonPressed(int id)
buttonReleased(QAbstractButton *button)
buttonReleased(int id)
buttonToggled(QAbstractButton *button, bool checked)
buttonToggled(int id, bool checked)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值