【Qt 学习笔记】Qt常用控件 | 按钮类控件Radio Button的使用及说明


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt常用控件 | 按钮类控件Radio Button的使用及说明

文章编号:Qt 学习笔记 / 22

文章目录

  • Qt常用控件 | 按钮类控件Radio Button的使用及说明
    • 一、QAbstractButton类
      • 1. 介绍
      • 2. QAbstractButton的子类
    • 二、QRadioButton介绍
      • 1. 简介
      • 2. 常用属性及方法
    • 三、QRadioButton的使用(代码示例)
      • 1. 使用代码编写选择性别
      • 2. 查看click, press, release, toggled的区别
      • 3. 单选框分组(QButtonGroup的使用)


一、QAbstractButton类

1. 介绍

QAbstractButton类是Qt中所有按钮类的基类,它提供了一些基本的按钮功能和属性。它是一个抽象类,不能直接实例化,而是通过继承它来创建具体的按钮类。

通过继承QAbstractButton类,我们可以创建不同类型的按钮,如QPushButton、QCheckBox、QRadioButton等。这些具体的按钮类会继承并扩展QAbstractButton类的功能,以实现不同类型按钮的特定功能。

2. QAbstractButton的子类

类名功能
QPushButton提供了一个可以点击的按钮。
QRadioButton提供了一个单选按钮。
QCheckBox提供了一个多选按钮。
QToolButton提供了一个更小的按钮,通常用于工具栏上。
QCommandLinkButton提供了一个带有说明文本的按钮。
QDialogButtonBox通常用于创建对话框,并提供了一组预定义的按钮,如Ok、Cancel、Apply等

在这里插入图片描述


二、QRadioButton介绍

1. 简介

在Qt中,QRadioButton是一种可以在用户界面中选择某个选项的按钮控件。它被设计为一组互斥的按钮,意味着在同一组中只能选择一个单选按钮。

QRadioButton继承自QAbstractButton,因此它具有一些共同的功能,例如设置文本、图标、状态等。它还可以发出clicked()信号,以便在用户单击按钮时执行相应的操作。

要使用QRadioButton,首先需要创建一个QRadioButton对象,并设置其文本。然后,可以将其添加到窗口或布局中,以便在应用程序中显示。在设计应用程序时,可以将多个QRadioButton对象放置在同一窗口中,并将它们分为不同的组,以实现单选按钮的功能。

通过使用QButtonGroup类,可以将多个QRadioButton对象分为不同的组。这样,在同一组中只能选择一个单选按钮。可以使用QButtonGroup的addButton()方法将QRadioButton对象添加到组中,并使用setId()方法为每个按钮设置唯一的ID。

2. 常用属性及方法

QRadioButton具有以下属性:

  • text(): 用于获取单选按钮的文本标签。

  • setText(const QString &text): 用于设置单选按钮的文本标签。

  • isChecked(): 用于检查单选按钮是否被选中。

  • setChecked(bool checked): 用于设置单选按钮是否被选中。

  • setIcon(const QIcon &icon): 设置单选按钮的图标。

  • setIconSize(const QSize &size): 设置单选按钮的图标大小。

  • setAutoExclusive(bool exclusive): 设置单选按钮是否自动排除其他已选中的单选按钮。

QAbstractButton 中和 QRadioButton 关系较大的属性

属性说明
checkable是否能选中
checked是否已经被选中. checkable 是 checked 的前提条件.
autoExclusive是否排他.选中⼀个按钮之后是否会取消其他按钮的选中.对于 QRadioButton 来说默认就是排他的

三、QRadioButton的使用(代码示例)

1. 使用代码编写选择性别

  1. 在界⾯上创建⼀个 label, 和 3 个 单选按钮RadioButton
    在这里插入图片描述

  2. 修改 widget.cpp, 编辑三个QRadioButton的 slot 函数
    在这里插入图片描述

  3. 设置默认选项,让程序启动默认选中性别男
    在这里插入图片描述

  4. 设置禁用的选项,有两种方式(一种不彻底一种彻底)
    在这里插入图片描述

  5. 运行程序,就可以选择性别,label 中的提示文字就会随之变化
    在这里插入图片描述

文件代码:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_radioButton_male_clicked();

    void on_radioButton_female_clicked();

    void on_radioButton_other_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置默认选项
    ui->radioButton_male->setChecked(true);
    ui->label->setText("请选择你的性别:男");

    //设置禁用选项
    //ui->radioButton_other->setCheckable(false);

    ui->radioButton_other->setEnabled(false);
}

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


void Widget::on_radioButton_male_clicked()
{
    ui->label->setText("请选择你的性别:男");
}

void Widget::on_radioButton_female_clicked()
{
    ui->label->setText("请选择你的性别:女");
}

void Widget::on_radioButton_other_clicked()
{
    ui->label->setText("请选择你的性别:私密");
}

2. 查看click, press, release, toggled的区别

  1. 在界⾯上创建四个单选按钮
    在这里插入图片描述
  2. 给 1 创建 clicked 槽函数, 给 2 创建 pressed 槽函数, 给 3 创建 released 槽函数,给 4 创建 toggled 槽函数
    在这里插入图片描述
  3. 运⾏程序, 可以看到
    在这里插入图片描述
  • clicked 是⼀次⿏标按下+⿏标释放触发的.
  • pressed 是⿏标按下触发的.
  • released 是⿏标释放触发的.
  • toggled 是 checked 属性改变时触发的.

文件代码:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_radioButton_clicked();

    void on_radioButton_2_pressed();

    void on_radioButton_3_released();

    void on_radioButton_4_toggled(bool checked);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

}

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


void Widget::on_radioButton_clicked()
{
    qDebug()<<"clicked";
}

void Widget::on_radioButton_2_pressed()
{
    qDebug()<<"pressed";
}

void Widget::on_radioButton_3_released()
{
    qDebug()<<"released";
}

void Widget::on_radioButton_4_toggled(bool checked)
{
    if(checked)
    {
        qDebug()<<"toggled checked true";
    }
    else
    {
        qDebug()<<"toggled checked false";
    }
}

3. 单选框分组(QButtonGroup的使用)

  1. 在界⾯上创建 6 个单选框, ⽤来模拟肯德基点餐界⾯
    此时直接运⾏程序, 可以看到, 这六个 QRadioButton 之间都是排他的.
    在这里插入图片描述
  2. 引⼊ QButtonGroup 进⾏分组.并编辑widget.cpp
    在这里插入图片描述
  3. 运行结果,就可以分开选择了
    在这里插入图片描述

文件代码:

#include "widget.h"
#include "ui_widget.h"
#include<QButtonGroup>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
     //创建三个 QButtonGroup
     QButtonGroup* group1 = new QButtonGroup(this);
     QButtonGroup* group2 = new QButtonGroup(this);
     QButtonGroup* group3 = new QButtonGroup(this);
     
     //两两⼀组, 放到三个 QButtonGroup 中.
     group1->addButton(ui->radioButton);
     group1->addButton(ui->radioButton_2);
     
     group2->addButton(ui->radioButton_3);
     group2->addButton(ui->radioButton_4);
     
     group3->addButton(ui->radioButton_5);
     group3->addButton(ui->radioButton_6);
}

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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】机器学习创建算法第6篇:线性回归,学习目标【附代码文档】

机器学习&#xff08;算法篇&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习算法课程定位、目标&#xff0c;K-近邻算法定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API。K-近邻算法&#xff0c;1.4 …

云服务器降价,阿里腾讯华为京东云优惠价格表整理

现在租一个服务器多少一个月&#xff1f;优惠价格低至3.8元1个月&#xff0c;租用一个月云服务器收费价格表&#xff1a;阿里云和腾讯云2核2G3M服务器优惠价格61元一年&#xff0c;折合一个月5元&#xff0c;京东云轻量云主机5.8元一个月&#xff0c;华为云服务器优惠价格3.8元…

如何落地一个FaaS平台?

简介&#xff1a; 函数即服务&#xff08;FaaS&#xff09;作为云计算 2.0 时代重要的发展方向&#xff0c;能够从工程效率、可靠性、性能、成本等方面给开发者带来巨大的价值&#xff0c;尤其是能够极大地提升研发效率。因此&#xff0c;拥抱FaaS成为开发者关心的重要技术领域…

【Java】maven的生命周期和概念图

maven的生命周期&#xff1a; 在maven中存在三套"生命周期"&#xff0c;每一套生命周期,相互独立,互不影响的,但是中同一套生命周期里,执行后面的命令会自动先执行前面的命令 CleanLifeCycle&#xff1a;清理的生命周期 clean defaultLifeCycle&#xff1a;默认的…

YashanDB亮相数据技术嘉年华精彩不断

4月12-13日&#xff0c;由墨天轮数据社区和中国数据库联盟&#xff08;ACDU&#xff09;主办的第十三届数据技术嘉年华 &#xff08;DTC 2024&#xff09;在北京召开。崖山数据库系统YashanDB受邀亮相&#xff0c;多维度展示了YashanDB的独特技术、创新成果与行业应用。 数据库…

大话设计模式之享元模式

享元模式是一种结构型设计模式&#xff0c;旨在有效地支持大量细粒度的对象共享&#xff0c;从而减少内存消耗和提高性能。 在享元模式中&#xff0c;对象分为两种&#xff1a;内部状态&#xff08;Intrinsic State&#xff09;和外部状态&#xff08;Extrinsic State&#xf…

代码随想录阅读笔记-回溯【复原IP地址】

题目 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201…

D3-八数码

D3-八数码 题目描述解题思路代码如下 题目描述 解题思路 本题若直接在3*3网格中思考较为困难&#xff0c;可以转换为一维的字符串&#xff0c;在一维字符串中考虑较为简单&#xff0c;要注意本题中两个字符交换位置时只能是x和另外字符交换&#xff0c;本题另外一个难点在于如何…

TypeScript系列之-深度理解基本类型画图讲解

JS的类型(8)&#xff1a; null undefined string number boolean bigint symbol object&#xff08;含 Array, Function,Date.....&#xff09; TS的类型(87): 以上所有&#xff0c;加上 void, never, enum, unknown, any 再加上自定义类型 type interface 上一节我们说…

判断IQ水平-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第50讲。 判断IQ水平&#…

利用栈删除数组中重复元素

先将数据排序&#xff08;降序或升序&#xff09; 建立一个“栈”&#xff0c;三种情况&#xff1a; 1.栈为空&#xff1a;压入一个元素 2.栈不为空 且 栈顶元素不等于将入栈元素&#xff1a;压入一个元素 3.栈不为空 且 栈顶元素等于将入栈元素&#xff1a;删除将压入元素…

SCI 四区(JEI)投稿到录用过程中的经历和心得体会

计算机视觉领域中&#xff0c;包含目标检测、三维重建、语义分割、图像分类等分支。其中&#xff0c;目标检测分支最卷&#xff0c;你知道的&#xff0c;没有背景和资源&#xff0c;发一篇SCI属实不易。本篇博客详细介绍本人投稿到录用过程中的经历和心得。 目录 1. 硬件资源落…

微信云开发小程序的服务器是属于服务商的还是商家的

越来越多的小程序&#xff0c;选择使用微信云开发来进行开发。然而&#xff0c;关于微信云开发小程序的服务器归属权问题&#xff0c;往往会引起一些商家的疑虑。本文将详细解析微信云开发小程序的服务器是属于服务商的还是商家的。 首先&#xff0c;我们需要明确微信云开发的概…

maven引入外部jar包

将jar包放入文件夹lib包中 pom文件 <dependency><groupId>com.jyx</groupId><artifactId>Spring-xxl</artifactId><version>1.0-SNAPSHOT</version><scope>system</scope><systemPath>${project.basedir}/lib/Spr…

1042: 中缀表达式转换为后缀表达式

解法&#xff1a;直接给算法 创建一个栈和一个空的后缀表达式字符串。 遍历中缀表达式中的每个字符。 如果当前字符是操作数&#xff0c;直接将其添加到后缀表达式字符串中。 如果当前字符是操作符&#xff0c;需要将其与栈顶的操作符进行比较&#xff1a; 如果栈为空&#…

动态规划专练( 337.组合总和Ⅳ)

337.组合总和Ⅳ 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#x…

2022年蓝桥杯省赛软件类C/C++B组----积木画

想借着这一个题回顾一下动态规划问题的基本解法&#xff0c;让解题方法清晰有条理&#xff0c;希望更多的人可以更轻松的理解动态规划&#xff01; 目录 【题目】 【本题解题思路】 【DP模版】 总体方针&#xff1a; 具体解题时的套路&#xff1a; 【题目】 【本题解题思…

Python判断节假日的几种方式,你学废了吗?

最近在推进信息安全巡检的工作&#xff0c;按公司制度要求和信息安全标准&#xff0c;要求按时对硬件设备、网络、机房、应用系统、数据库等等做巡检工作。为了保证达到信息安全的目标&#xff0c;要求在每周四和节假日的前一天对各类设备和系统进行巡检。 1、使用holidays库判…

zookeeper分布式应用程序协调服务+消息中间件kafka分布式数据处理平台

一、zookeeper基本介绍 1.1 zookeeper的概念 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、…

python小游戏

这些游戏你玩过几个&#xff1f; 1.贪吃蛇2.吃豆人3.加农炮4.四子棋5. Fly Bird<font color #f3704ab>6.记忆&#xff1a;数字对拼图游戏&#xff08;欢迎挑战&#xff01;用时&#xff1a;2min&#xff09;7.乒乓球8.上课划水必备-井字游戏&#xff08;我敢说100%的人都…