C++ Qt开发:RadioButton单选框分组组件

news2024/7/6 19:46:20

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioButton单选框组件以及与之交互的QButtonGroup类的常用方法及灵活运用。

QRadioButton是Qt框架中的一个部件(Widget),用于提供单选按钮的界面元素。单选按钮允许用户从多个互斥的选项中选择一个,通常用于表示一组相关但互斥的选项。

以下是QRadioButton的一些常用方法,以表格形式概述:

方法描述
QRadioButton(QWidget *parent = nullptr)构造函数,创建一个单选按钮,可指定父部件。
setText(const QString &text)设置单选按钮的文本标签。
text() const获取单选按钮的文本标签。
setChecked(bool checked)设置单选按钮的选中状态,true表示选中,false表示未选中。
isChecked() const判断单选按钮是否处于选中状态。
setAutoExclusive(bool enabled)设置是否自动将同一组中的其他单选按钮设为未选中状态。
setObjectName(const QString &name)设置对象名称,用于样式表等。
setCheckedState(Qt::CheckState state)设置单选按钮的选中状态,可选值有Qt::CheckedQt::UncheckedQt::PartiallyChecked
checkState() const获取单选按钮的选中状态,返回Qt::CheckedQt::UncheckedQt::PartiallyChecked
toggled(bool checked)信号,当单选按钮的选中状态发生改变时触发。参数checked表示是否选中。
click()模拟点击单选按钮,触发点击事件。
setDisabled(bool disable)设置单选按钮是否被禁用,true表示禁用,false表示启用。
setEnabled(bool enable)设置单选按钮是否启用,true表示启用,false表示禁用。
blockSignals(bool block)阻塞或解除阻塞信号与槽的连接,用于在某些操作时临时禁用信号槽。

这些方法提供了对QRadioButton的一些基本操作,包括设置文本、选中状态、信号与槽等。通过这些方法,可以在应用程序中方便地创建和控制单选按钮。总而言之,QRadioButton是一种简单而有效的界面元素,用于在多个互斥的选项中进行单一选择。

谈到QRadioButton组件就不得不提起QButtonGroup类,因为这两者通常是需要组合在一起使用的,一般来说QButtonGroup用于管理一组按钮,通常是单选按钮(QRadioButton)或复选按钮(QCheckBox)。它为这组按钮提供了一些便捷的方法,方便进行管理和操作。

首先我们需要在mainwindow.h头文件中手动增加一个槽函数的声明,该槽函数用于触发后的处理工作。

private slots:
    void MySlots();

其次在主程序mainwindow.cpp中我们通过new QBUttonGroup新建一个按钮组,并将其加入到group_sex组内,创建信号和槽的绑定,将信号全部绑定到MySlots()槽函数上,如下所示;

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QMessageBox>
#include <QButtonGroup>
#include <iostream>

// 定义全局组变量
QButtonGroup *group_sex;

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

    // 将RadioButton放入ButtonGroup组中
    group_sex = new QButtonGroup(this);
    group_sex->addButton(ui->radioButton_male,0);
    group_sex->addButton(ui->radioButton_female,1);
    group_sex->addButton(ui->radioButton_unknown,2);

    // 设置默认选中
    ui->radioButton_unknown->setChecked(true);

    // 绑定信号和槽
    connect(ui->radioButton_male,SIGNAL(clicked(bool)),this,SLOT(MySlots()));
    connect(ui->radioButton_female,SIGNAL(clicked(bool)),this,SLOT(MySlots()));
    connect(ui->radioButton_unknown,SIGNAL(clicked(bool)),this,SLOT(MySlots()));
}

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

// 手动创建一个槽函数
void MainWindow::MySlots()
{
    switch(group_sex->checkedId())
    {
    case 0:
        std::cout << "male" << std::endl;
        QMessageBox::information(nullptr, "信息", "用户选中了男", QMessageBox::Ok);
        break;
    case 1:
        std::cout << "female" << std::endl;
        QMessageBox::information(nullptr, "信息", "用户选中了女", QMessageBox::Ok);
        break;
    case 2:
        std::cout << "unknown" << std::endl;
        QMessageBox::information(nullptr, "信息", "用户选中了未知", QMessageBox::Ok);
        break;
    }
}

当程序运行后,读者可自行选择不同的单选框,此时会弹出不同的提示信息,如下图;

当然如果读者不想使用QButtonGroup对单选框进行分组操作,同样可以实现判断选中状态,通过依次检查isChecked()单选框的状态即可实现,但是此类方式并不推荐使用。

void MainWindow::on_pushButton_clicked()
{
    if(ui->radioButton_male->isChecked() == true)
    {
        std::cout << "选中男" << std::endl;
    }
    if(ui->radioButton_female->isChecked() == true)
    {
        std::cout << "选中女" << std::endl;
    }
    if(ui->radioButton_unknown->isChecked() == true)
    {
        std::cout << "选中未知" << std::endl;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字人直播软件源码大比拼:哪种才更适合无人直播需求?

随着现代技术的不断发展&#xff0c;数字人直播软件源码越来越受到商家和短视频用户的关注。数字人直播软件通过虚拟形象和人工智能技术&#xff0c;让商家可以用数字人主播与消费者进行互动和沟通做到无人直播带货的方式&#xff0c;给人们带来了全新的娱乐体验。很多创业者也…

GeoTrust OV证书

当谈到网站安全性和可信度时&#xff0c;GeoTrust OV证书是一个备受推崇的选择。作为一家备受尊敬的数字证书颁发机构&#xff0c;GeoTrust以其卓越的品牌声誉和高质量的产品而闻名于世。GeoTrust OV证书提供了一系列的安全功能&#xff0c;同时还具有出色的性价比&#xff0c;…

数据中心到底是如何工作的?

数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系到整个网络生态的运转。但这个复杂而庞大的数据枢纽背后隐藏着怎样的精密机制&#xff0c;是许多人颇感好奇的谜。 数字时代的数据中心&#xff0c;就如同网络世界的心脏&#xff0c;它的鼓动关系…

『C++成长记』拷贝构造函数

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、拷贝构造函数 &#x1f4d2;1.1拷贝构造函数的概念 &#x1f4d2;1.2拷贝构造…

SAP 散装物料简介

散装物料(Bulk Material),也叫做间接物料(Indirect Material),是一般企业在库存管理时常见的一种物料形式。散装物料专指那些价值小、消耗量大、消耗率高的物料件。这些物料组件同样服务于企业的生产活动,并且在企业的工作中心中被生产活动直接消耗(如螺丝钉、润滑油、…

使用飞书自定义机器人发送消息

使用飞书机器人可以很方便的获取自动化任务的反馈&#xff1a; 在群里创建一个机器人&#xff1a; 记住下面的 webhook地址&#xff0c;这个是标识机器人的唯一ID&#xff0c;比如它的webhook地址是&#xff1a;"https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxx-a…

方案分享:如何做好云中的DDoS防御?

所有企业都会有遭受DDoS攻击的风险。由于目前DDoS即服务&#xff08;DaaS&#xff09;的售价低廉&#xff0c;因此对于恶意攻击者来说&#xff0c;发起攻击比以往任何时候都更加容易&#xff0c;技术门槛也更低。分析公司IDC一项关于DDoS防御的调查显示&#xff0c;超过50%的IT…

python自动化测试实战 —— 自动化测试框架的实例

软件测试专栏 感兴趣可看&#xff1a;软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识&#xff1a; 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

混频原理与频谱搬移

文章目录 混频器频谱搬移何为镜像频率信号的复混频参考 混频器 混频器是一个三端器件&#xff0c;两个输入一个输出&#xff0c;输出信号等于输入信号的乘积。所以混频器可以将两个不同频率的信号通过相乘的方式&#xff0c;从而产生原本两个频率和与差的新信号。 数学推导举…

vue文件下载请求blob文件流token失效的问题

页面停留很久token失效没有刷新页面&#xff0c;这时候点击下载依然可以导出文件&#xff0c;但是文件打不开且接口实际上返回的是401&#xff0c;这是因为文件下载的方式通过window创建a标签的形式打开的&#xff0c;并没有判断token失效问题 const res await this.$axios.…

Unity | Shader基础知识(第一集:unity中最简单的shader)

一、unity的shader unity写的shader并不是真正意义上的shader。 简单解释&#xff1a;真正的shader语言写起来还是麻烦的&#xff0c;unity希望大家写起来简单一点&#xff0c;于是在原来的基础上&#xff0c;给大家优化了一个语言&#xff0c;叫shaderLab&#xff0c;所以我…

PyTorch深度学习实战(25)——自编码器

PyTorch深度学习实战&#xff08;25&#xff09;——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型&#xff0c;用于数据的特征提取和降维&#xff0c;它由一个编码器 (Encoder) 和一…

智慧燃气让城市能源系统高效运行

关键词&#xff1a;智慧燃气、燃气数字化、智慧燃气平台、智慧燃气解决方案、智慧燃气系统 随着我国城镇燃气行业的发展&#xff0c;燃气行业管理及服务从简单的手工运作阶段迈入数字燃气阶段&#xff0c;大量采用信息化手段管理燃气业务&#xff0c;智慧燃气应运而生。它既是…

互动时代的新趋势

数字人直播是指通过数字化技术将虚拟人物以真实的方式呈现在观众面前&#xff0c;并实现与观众的实时互动的一种新型娱乐形式。近年来&#xff0c;随着科技的发展和社交媒体的兴起&#xff0c;数字人直播越来越受到人们的关注&#xff0c;并成为当今互动时代的新趋势。 首先&a…

centos7x 安装支持gpu驱动的docker

1、卸载以前版本的驱动 sudo /usr/bin/nvidia-uninstall2、先安装基础项 yum install kernel kernel-devel gcc make -yyum install kernel kernel-devel gcc gcc-c make -y 3、禁用驱动源 nouveau echo "blacklist nouveau " >>/etc/modp…

移动CRM:智能化助力,销售更高效

商机稍纵即逝&#xff0c;及时把握机会才能促成更多交易。想要在出差途中也能掌握公司运营情况&#xff1f;得益于移动互联网的快速发展&#xff0c;现在您可以利用移动CRM客户管理系统&#xff0c;实时管理线索&#xff0c;查看销售数据。本文将向您介绍&#xff0c;移动CRM能…

热分析和报告软件 :FLIR Thermal Studio Pro Crack

FLIR 热工作室套件。FLIR Thermal Studio Pro FLIR Thermal Studio Suite 可帮助用户简化检查、组织数据并管理数千张热图像和视频——无论他们使用的是手持式热像仪、无人机系统 (UAS)、声学成像相机还是光学气体成像&#xff08;OGI&#xff09;相机。该订阅软件提供了关键组…

Qt提升绘制效率,绘制加速。

在我们绘制一些复杂逻辑且数据量巨大的图形时&#xff0c;经常会出现流畅性问题&#xff0c;本文就是来进行讲解如何提升绘制效率的。 实现思路&#xff1a; 场景1&#xff1a;我们绘制多个静态图形和绘制一张图片哪个更快。很明显绘制多个图形的时候要慢很多。所以我们将多个图…

Web漏洞分析-文件解析及上传(上)

随着互联网的迅速发展&#xff0c;网络安全问题变得日益复杂&#xff0c;而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞&#xff0c;通过对文件上传、Web容器IIS、命令执行、Nginx文件解析漏洞以及公猫任意文件上传等方面的细致分析&…

* demo、源码、桌面端软件

demo demohttps://bidding-m.gitee.io/maptalks-test-next/#/ 源码 源码https://gitee.com/bidding-M/maptalks-test-next 桌面端 桌面端https://gitee.com/bidding-M/map-collection/blob/master/apps/maptalks-win-0.0.1-x64.exe