【Qt学习】QRadioButton 的介绍与使用(性别选择、模拟点餐)

文章目录

  • 介绍
    • 实例使用
    • 实例1(性别选择 - 单选 + 隐藏)
    • 实例2(模拟点餐,多组单选)
  • 相关资源文件

介绍

这里简单QRadioButton类 进行介绍

  • QRadioButton 继承自 QAbstractButton ,用于创建单选按钮;对于父类的属性和⽤法, QRadioButton 同样适⽤。

由于QRadioButton继承自QAbstractButton类,因此拥有了一些与按钮相关的属性和方法。其中一个重要的属性就是check属性,用于判断按钮是否被选中

有以下三属性

属性说明
checkable()检查是否允许被选中
checked()检查是否已被选中
autoExclusive()是否排他:即当选中该按钮后是否会取消对其他按钮的选择(QRadioButton默认排他)

我们利用上述的属性进行两实例编写:

实例使用

实例1(性别选择 - 单选 + 隐藏)

我们首先在Designer界面进行下面的布局:
在这里插入图片描述

对于上述四个按钮,我们分别编写其槽函数,用于选中按钮时更改上方label所显示的内容

// 当点击某个按钮时,更新文本
void Widget::on_radioButton_male_clicked()
{
    ui->label->setText("您的性别为: 男");
}

void Widget::on_radioButton_female_clicked()
{
    ui->label->setText("您的性别为: 女");
}

void Widget::on_radioButton_hide_clicked()
{
    ui->label->setText("你的性别为:(隐藏性别)");
}

void Widget::on_radioButton_gunship_clicked()
{
    ui->label->setText("您选择的性别为: 武装直升机");
}

但,一个人的性别是武装直升机,显然是不合理的,我们可以通过上面介绍的属性函数进行按钮无效化:(并可以添加默认选项)

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

    // 将 “性别隐藏” 添加为默认选项:
    ui->radioButton_hide->setChecked(true);

    // 将按钮无效化(无法点击)
    // ui->radioButton_gunship->setDisabled(true);
    ui->radioButton_gunship->setEnabled(false);
}

效果如下:

请添加图片描述


实例2(模拟点餐,多组单选)

我们首先在Designer界面下进行如下布局:

在这里插入图片描述

我们知道,QRadioButton默认是排他的,为了使每种餐点都能点一份,需要进行分组操作:

  1. 在Widget类的头文件(widget.h)中添加按钮组的声明作为私有成员变量:
private:
    QButtonGroup* buttonGroup1;
    QButtonGroup* buttonGroup2;
    QButtonGroup* buttonGroup3;
  1. widget.cc中的构造函数中初始化这些成员变量:
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 分组
    buttonGroup1 = new QButtonGroup(this);
    buttonGroup2 = new QButtonGroup(this);
    buttonGroup3 = new QButtonGroup(this);

    // 把上述单选按钮, 放到不同的组里.
    buttonGroup1->addButton(ui->radioButton_1);
    buttonGroup1->addButton(ui->radioButton_2);
    buttonGroup1->addButton(ui->radioButton_3);

    buttonGroup2->addButton(ui->radioButton_4);
    buttonGroup2->addButton(ui->radioButton_5);
    buttonGroup2->addButton(ui->radioButton_6);

    buttonGroup3->addButton(ui->radioButton_7);
    buttonGroup3->addButton(ui->radioButton_8);
    buttonGroup3->addButton(ui->radioButton_9);
}

  1. 最后,我们在提交按钮的槽函数中进行两个操作:
    • 提取每组的餐饮选择
    • 弹出提示框,框内为提取的内容(即选择的内容)
void Widget::on_pushButton_clicked()
{
    QString message;
    // 提取三组的选择
    QButtonGroup* groups[] = {buttonGroup1, buttonGroup2, buttonGroup3};
    for (int i = 0; i < 3; ++i) {
        QAbstractButton* checkedButton = groups[i]->checkedButton();
        if (checkedButton) {
            message +=  QString::number(i + 1) + " " + checkedButton->text() + "\n";
        } else {
            message +=  QString::number(i + 1) + " 未选择\n";
        }
    }
    // 将选择作为提示框提交
    QMessageBox::information(this, "您选择的餐饮是", message);
}

效果如下:
请添加图片描述

相关资源文件

上述涉及的代码等资源文件在👇

QRadioButton的使用 - 模拟点餐
QRadioButton的使用 - 性别选择

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

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

相关文章

提升装备制造企业竞争力:2023年CRM选型与应用完全解读

在加快产业转型升级的大背景下&#xff0c;高端装备制造业既面临机遇也面临挑战。随着公司规模的不断壮大&#xff0c;再加上装备制造业营销体系及服务体系管理体系的复杂性&#xff0c;一些问题逐渐暴露出来&#xff0c;装备制造业企业需要根据自身业务需求和管理流程选择合适…

【VRTK】【Unity】【VR开发】使用注意事项-Simulator没反应

【背景】 建立一个基本的VRTK项目后&#xff0c;用Simulator Rig模拟运行&#xff0c;移动鼠标后发现Simulator Rig没有任何反应。 【分析】 Console中的报错信息类似于没有启用Legacy unity input package&#xff0c;Legacy的意思是经典的&#xff0c;所以应该是指没有在p…

eCharts图表点击事件(柱形、label),获取选择项的下标及值

获取选则项的值的话&#xff0c;打印params就能找到了&#xff0c;故主要说明找到对应下标的情况。 柱形点击事件 简单代码 this.myChart echarts.init(this.$refs.chartbox1); this.myChart.off("click"); this.myChart.on("click", (params) > {c…

springboot+vue网站开发02-前端页面的渲染代码展示

springbootvue网站开发02-前端页面的渲染代码展示&#xff01;经过上面2个小节的分享&#xff0c;我们已经准备好了前端渲染所需要的数据接口了。可以给大家正常返回新闻分类的信息了。 下面给大家看看&#xff0c;前端vue网站开发的代码&#xff0c;已经渲染的业务流程是什么。…

【Linux】 logout命令使用

logout命令 Linux logout命令用于前登录的用户退出系统。 它会终止当前用户的会话并返回到登录界面或者重新登录。当使用logout命令时&#xff0c;系统会关闭所有与当前用户相关的进程和程序&#xff0c;并释放占用的资源。 使用logout命令可以方便地切换用户或者注销当前用…

Stable Diffusion 绘画入门教程(webui)-ControlNet(Tile/Blur)

上篇文章介绍了y语义分割Seg&#xff0c;这篇文章介绍下Tile/Blur&#xff08;增加/减少细节&#xff09; Tile用于增加图片细节&#xff0c;一般用于高清修复&#xff0c;Blur用于减少图片细节&#xff08;图片模糊&#xff09;&#xff0c;如下图&#xff0c;用Tile做修复&a…

opengl pyqt 显示文字

目录 效果图 效果图 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QOpenGLWidgetfrom OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import *class OpenGLWidget(QOpenGLWidget):def __init__(self, parentNone):super(OpenGLWidget…

应用中如何将单数据库升级为集群【数据库集群】【MySQL集群模式】

MySQL集群架构搭建以及多数据源管理实战 应用中如何将单数据库升级为集群1、搭建MySQL集群&#xff0c;实现服务和数据的高可用1>搭建基础MySQL服务。​ 2、启动MySQL服务​ 3、连接MySQL 2>搭建MySQL主从集群1》配置master服务2》配置slave从服务3》主从集群测试4》全库…

Automated Testing for LLMOps 01:使用CircleCI进行持续集成CI

Automated Testing for LLMOps 这是学习https://www.deeplearning.ai/short-courses/automated-testing-llmops/ 这门课的笔记 Learn how LLM-based testing differs from traditional software testing and implement rules-based testing to assess your LLM application. …

研发流程图

1、需求评审流程 2、用例评审流程 3、代码评审流程 4、产品功能上线流程

算法学习(十一)拓扑排序

拓扑排序 1. 概念 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序&#xff0c;是将G中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点u和v&#xff0c;若边<u,v>∈E(G)&#xff0c;则u在线性序列中出现在v之前。通常&#xff0c;这样的线性…

【IMX6ULL学习笔记】Linux启动流程

前言&#xff1a;Linux启动流程大致流程如下&#xff1a; 在顶层目录linux-imx-4.1.15-2.1.0-g3dc0a4b-v2.7的Makefile中看到内核的链接脚本为vmlinux.lds&#xff1a; export KBUILD_LDS : arch/$(SRCARCH)/kernel/vmlinux.lds首先分析 Linux 内核的连接脚本文件 a…

pclpy 半径滤波实现

pclpy 半径滤波实现 一、算法原理背景 二、代码1.pclpy 官方给与RadiusOutlierRemoval2.手写的半径滤波&#xff08;速度太慢了&#xff0c;用官方的吧&#xff09; 三、结果1.左边为原始点云&#xff0c;右边为半径滤波后点云 四、相关数据 一、算法原理 背景 RadiusOutlier…

高级语言期末2010级A卷

1.编写函数&#xff0c;按照如下公式计算圆周率π的值&#xff08;精确到1e-5&#xff09; #include <stdio.h>double pai() {double last0;double flag1;int n1;while(flag-last>1e-5) {lastflag;flag*1.0*(2*n)*(2*n)/((2*n-1)*(2*n1));n;}return 2*last; }int main…

一分钟 由浅入深 学会Navigation

目录 1.官网正式概念 1.1 初认知 2.导入依赖 2.1 使用navigation 2.2 safe Args插件-> 传递数据时用 3.使用Navigation 3.1 搭建初始框架 3.2 确定action箭头的属性 3.3 为Activity添加NavHostFragment控件 3.4 NavController 管理应用导航的对象 3.5 数据传递(单…

DAY29--learning English

一、积累 1.sign up for 2.business trip 3.calendar 4.acne 5.band-aid 6.scar 7.prescription 8.pimple 9.saucy 10.slurp 11.germaphobe 12.shred 13.boggle 14.platser 15.lick 16.sling 17.smack 18.stereotype 19.salmon 20.cable 二、练习 1.牛津原译 calendar. /ˈk…

broom系列包: 整理模型输出结果

broom包 说明 tidy、augment和glance函数的输出总是一个小tibble。 输出从来没有行名。这确保了您可以将它与其他整洁的输出组合在一起&#xff0c;而不用担心丢失信息(因为R中的行名不能包含重复)。 有些列名保持一致&#xff0c;这样它们就可以跨不同的模型进行组合。 tidy(…

IOBR2 更新(学习自备)

IOBR查看其收录的相关基因集(自备)_肿瘤 tme特征 iobr-CSDN博客 IOBR2&#xff1a;多维度解析肿瘤微环境 - 知乎 (zhihu.com) 学习手册&#xff1a;https://iobr.github.io/book/ &#xff08;里面有详细教程&#xff09; 系统综合的分析工具&#xff08;Immuno-Oncology Bi…

低代码与大语言模型的探索实践

低代码系列文章&#xff1a; 可视化拖拽组件库一些技术要点原理分析可视化拖拽组件库一些技术要点原理分析&#xff08;二&#xff09;可视化拖拽组件库一些技术要点原理分析&#xff08;三&#xff09;可视化拖拽组件库一些技术要点原理分析&#xff08;四&#xff09;低代码…

《论文阅读》通过识别对话中的情绪原因来提高共情回复的产生 EMNLP 2021

《论文阅读》通过识别对话中的情绪原因来提高共情回复的产生 EMNLP 2021 前言简介方法实现Emotion ReasonerResponse Generator实验结果示例总结前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Improv…