QButtonGroup、QRadioButton与QCheckBox的使用

//QButtonGroup与QRadioButton单选框使用
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QRadioButton>
#include <QHBoxLayout>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QWidget *widget = new QWidget(this);
    widget->setGeometry(0, 0, width(), height());

    btnGroup = new QButtonGroup(this);
    btnGroup->setExclusive(true);

    QHBoxLayout *layout = new QHBoxLayout(widget);
    layout->setSpacing(10);
    layout->addStretch(1);
    for(int i=0; i<3; i++)
    {
        QRadioButton *btn = new QRadioButton();
        btn->setText("RadioButton" + QString::number(i));
        layout->addWidget(btn);
        btnGroup->addButton(btn);
    }
    layout->addStretch(1);

    connect(btnGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onButtonClicked(QAbstractButton*)));
}

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

void MainWindow::onButtonClicked(QAbstractButton *button)
{
    // 当前点击的按钮
    qDebug() << QString("Clicked Button : %1").arg(button->text());

    // 遍历按钮,获取选中状态
    QList<QAbstractButton*> list = btnGroup->buttons();
    foreach (QAbstractButton *btn, list)
    {
        QString strStatus = btn->isChecked() ? "Checked" : "Unchecked";
        qDebug() << QString("Button : %1 is %2").arg(btn->text()).arg(strStatus);
    }
}

从左到右依次按下按键,运行测试效果如下:

//从左到右依次按下按键,以下是运行测试结果:
"Clicked Button : RadioButton0"
"Button : RadioButton0 is Checked"
"Button : RadioButton1 is Unchecked"
"Button : RadioButton2 is Unchecked"
"Clicked Button : RadioButton1"
"Button : RadioButton0 is Unchecked"
"Button : RadioButton1 is Checked"
"Button : RadioButton2 is Unchecked"
"Clicked Button : RadioButton2"
"Button : RadioButton0 is Unchecked"
"Button : RadioButton1 is Unchecked"
"Button : RadioButton2 is Checked"

在这里插入图片描述

//QButtonGroup与QCheckBox复选框使用
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QRadioButton>
#include <QHBoxLayout>
#include <QCheckBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QWidget *widget = new QWidget(this);
    widget->setGeometry(0, 0, width(), height());

    btnGroup = new QButtonGroup(this);
    btnGroup->setExclusive(false);

    QHBoxLayout *layout = new QHBoxLayout(widget);
    layout->setSpacing(10);
    layout->addStretch(1);
    for(int i=0; i<3; i++)
    {
        QCheckBox *btn = new QCheckBox();
        btn->setText("CheckBox" + QString::number(i));
        layout->addWidget(btn);
        btnGroup->addButton(btn);
    }
    layout->addStretch(1);

    connect(btnGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onButtonClicked(QAbstractButton*)));
}

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

void MainWindow::onButtonClicked(QAbstractButton *button)
{
    // 当前点击的按钮
    qDebug() << QString("Clicked Button : %1").arg(button->text());

    // 遍历按钮,获取选中状态
    QList<QAbstractButton*> list = btnGroup->buttons();
    foreach (QAbstractButton *btn, list)
    {
        QString strStatus = btn->isChecked() ? "Checked" : "Unchecked";
        qDebug() << QString("Button : %1 is %2").arg(btn->text()).arg(strStatus);
    }
}

从左到右依次按下按键,运行测试效果如下:

"Clicked Button : CheckBox0"
"Button : CheckBox0 is Checked"
"Button : CheckBox1 is Unchecked"
"Button : CheckBox2 is Unchecked"
"Clicked Button : CheckBox1"
"Button : CheckBox0 is Checked"
"Button : CheckBox1 is Checked"
"Button : CheckBox2 is Unchecked"
"Clicked Button : CheckBox2"
"Button : CheckBox0 is Checked"
"Button : CheckBox1 is Checked"
"Button : CheckBox2 is Checked"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值