Qt常用控件——QRadioButton和QCheckBox

news2024/12/23 22:45:57

文章目录

    • QRadioButton
    • QAbstractButton信号
    • 实现简单的点餐页面
    • QCheckBox

QRadioButton

QRadioButton是单选按钮,可以让我们在多个选项当中选择一个

作为QAbstractButtonQWidget的子类,它们的属性和语法,对于QRadioButton同样适用

QAbstractButton中和QRadioButton关联较大的属性

属性说明
checkable是否能被使用
checked是否已经被选择(checkable是check的前提条件)
autoExclusive是否排他
选中一个按钮之后,是否会取消其他按钮的选中
对于QRadioButton来说,默认排他的(单选)
#include "widget.h"
#include "ui_widget.h"

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

    //添加默认选项
    ui->radioButton_other->setChecked(true);
    ui->label->setText("您的性别为: ?");
}

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("您的性别为: 其他");

}

这里可以看到QRadioButton默认是排他的,单选

image-20240909200830421

禁用选项:

想要禁用某个按钮,可以用setCheckable(false)

#include "widget.h"
#include "ui_widget.h"

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

    //添加默认选项
    ui->radioButton_other->setChecked(true);
    ui->label->setText("您的性别为: ?");

    //禁用
    ui->radioButton_disable->setCheckable(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("您的性别为: 其他");

}

void Widget::on_radioButton_disable_clicked()
{
    ui->label->setText("error");
}

这里虽然不可选中,但是还是触发了点击事件。

这是因为checkable只能够让按钮不被选中,但还是可以响应点击事件

GIF 2024-9-9 20-18-00

可以采用setEnabled或者setDisabled

ui->radioButton_disable->setDisabled(true);
//ui->radioButton_disable->setEnabled(false);

image-20240909202201705

QAbstractButton信号

image-20240909202612422

  • clicked:之前大多数用的都是cicked()信号,表示一次点击事件(等于一次pressed + released
  • clicked(bool):参数的bool,表示是否被选中
  • pressed():鼠标按下
  • released():鼠标释放
  • toggled(bool):切换的时候会触发
void Widget::on_radioButton_clicked(bool checked)
{
    //checked表示当前radioButton的选中状态
    qDebug() << "clicked: " << checked;
}

void Widget::on_radioButton_4_pressed()
{
    qDebug() << "pressd";
}

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

void Widget::on_radioButton_3_toggled(bool checked)
{
    //checked状态发生改变,就会触发这个信号
    qDebug() << "toggled: " << checked;
}

GIF 2024-9-9 20-37-33

实现简单的点餐页面

image-20240909211700084

这里分为三组,需要选择三个,但是radioButton默认是排他的,所有我们可以分组,采用QButtonGroup针对单选按钮进行分组

#include "widget.h"
#include "ui_widget.h"
#include<QButtonGroup>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //进行分组
    QButtonGroup *group1 = new QButtonGroup(this);
    QButtonGroup *group2 = new QButtonGroup(this);
    QButtonGroup *group3 = new QButtonGroup(this);

    //将按钮放入不同组里
    group1->addButton(ui->radioButton);
    group1->addButton(ui->radioButton_2);
    group1->addButton(ui->radioButton_3);
    group1->addButton(ui->radioButton_4);

    group2->addButton(ui->radioButton_5);
    group2->addButton(ui->radioButton_6);
    group2->addButton(ui->radioButton_7);
    group2->addButton(ui->radioButton_8);


    group3->addButton(ui->radioButton_9);
    group3->addButton(ui->radioButton_10);
    group3->addButton(ui->radioButton_11);
    group3->addButton(ui->radioButton_12);

}

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

image-20240909212340649

QCheckBox

QRadioButton只能选一个,而QCheckBox可以选中多个。

QCheckBox最相关的属性也是checkablechecked,都是继承自QAbstractButton

QCheckBox独有的属性tristate,用来实现“三态复选框”

示例:

image-20240909215152983

#include "widget.h"
#include "ui_widget.h"

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

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


void Widget::on_pushButton_clicked()
{
    QString ret = "今日:";
    if(ui->checkBox_work->isChecked())
    {
        ret += ui->checkBox_work->text() + " ";
    }
    if(ui->checkBox_eat->isChecked())
    {
        ret += ui->checkBox_eat->text() + " ";
    }
    if(ui->checkBox_sleep->isChecked())
    {
        ret += ui->checkBox_sleep->text() + " ";
    }
    if(ui->checkBox_drink->isChecked())
    {
        ret += ui->checkBox_drink->text() + " ";
    }
    ui->label->setText(ret);
}

GIF 2024-9-9 21-50-44

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

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

相关文章

springboot+vue+mybatis计算机毕业设计医护系统的设计与实现+PPT+论文+讲解+售后

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;医护系统的设计与实现利用计算机网络实现信息化管理&#xff0c;使整个医护系统的发展和服务水平有显著提升。 本文拟采用Eclipse开发…

【尚跑】2024陕西淳化天然氧吧半程马拉松赛149顺利完赛

1、赛事背景 奔跑美丽淳化&#xff0c;畅游天然氧吧。9月8日上午&#xff0c;2024淳化天然氧吧半程马拉松赛在淳化县润镇东街鸣枪开跑&#xff0c;4000名马拉松爱好者相聚美丽淳化&#xff0c;赏荞麦花海、闻硕果飘香&#xff0c;共同开启这场挑战自我、超越极限的奔跑之旅 本次…

EasyRecovery破解版下载无需注册,easyrecovery数据恢复软件免费版激活码密钥

EasyRecovery易恢复是一款功能强大的数据恢复软件&#xff0c;为无数人群解决了数据丢失的烦恼&#xff0c;为工作生活带去了便捷。无数使用者在使用过后&#xff0c;都肯定了其强大的数据恢复功能。具体来说&#xff0c;EasyRecovery易恢复可以恢复多方面的数据&#xff0c;Ea…

如何规避SQL注入漏洞

1 引言 对于很多初学者而言&#xff0c;SQL注入攻击是一种很容易被忽略的安全漏洞&#xff0c;其原理很简单&#xff0c;在日常编码中需要注意规避&#xff0c;养成良好的系统安全意识。 2 原理 SQL注入漏洞产生的根本原因&#xff0c;就是在编码过程中手动拼接sql参数造成的…

os模块函数

1、常用命令 os.getcwd() 返回当前工作目录 os.listdir() 返回指定文件路径下的文件夹列表或者文件列表 os.mkdir 创建文件夹,不能创建递归文件夹,也就是上一层文件夹必须存在,不存在时会报错,同时在指定目录下有相同的文件夹名称,再创建会报错 os.makedirs 可以创建…

[基于 Vue CLI 5 + Vue 3 + Ant Design Vue 3 搭建项目] 01 安装 nodejs 环境

文章目录 下载安装测试 这里让我们去看看如何安装一下 nodejs 的环境 下载 通过官网进行下载安装包 官网 https://nodejs.org/zh-cn点击 下载 Node.js (LTS) 开始下载 安装 下载完成之后&#xff0c;双击进行安装 开始进行安装了 这样&#xff0c;node.js 就安装好了 测试 …

计算机毕业设计 | springboot旅行旅游网站管理系统(附源码)

1&#xff0c;绪论 1.1 背景分析 随着人们生活水平的提高和对休闲旅游的日益重视&#xff0c;旅游业已成为全球最大的经济产业之一。越来越多的人选择通过在线方式进行旅行预订&#xff0c;这种趋势为旅游网站提供了巨大的商机。用户体验是决定旅游网站成功与否的关键因素。良…

TD综合教程——粒子切换和音轮(附思路和工程文件)

一、粒子切换 整体思路&#xff1a; 给constant中的color实时滑条数值但是没有变化 解决办法&#xff1a;在这里使用的rgb不是0-255的色域&#xff0c;而是0-20&#xff0c;使用Math CHOP改变即可 二、音轮 整体思路&#xff1a; 在math中输入双声道音频后&#xff0c;可以使…

WinCC V7.5与S7-1200 PLC 通信

自WinCC V7.2版本起&#xff0c;软件新增加了 "SIMATIC S7-1200, S7-1500 Channel"通道,用于WinCC与 S7-1200/S7-1500 PLC之间的通信。此驱动只支持以太网通讯&#xff0c;使用 TCP/IP 协议。 工控人加入PLC工业自动化精英社群 文档示例的软/硬件环境硬件&#xff1…

QLORA:高效微调量化大型语言模型

人工智能咨询培训老师叶梓 转载标明出处 传统的16位精度微调需要超过780GB的GPU内存&#xff0c;对于参数量极大的模型&#xff0c;如65B&#xff08;即650亿参数&#xff09;的模型&#xff0c;在资源有限的情况下大模型的微调几乎是不可能的。华盛顿大学的研究者团队提出了一…

您的计算机已被.rmallox、.hmallox勒索病毒感染?恢复您的数据的方法在这里!

导言 近年来&#xff0c;勒索病毒攻击手段不断升级&#xff0c;其中双重勒索策略更是成为了攻击者们的“新宠”。这种策略不仅通过加密受害者的文件来要求赎金&#xff0c;还进一步威胁要泄露或公开其敏感数据&#xff0c;实现了对受害者的双重打击。面对如此严峻的网络安全形…

[ubuntu]opencv4.9.0源码编译报错undefined reference to ‘TIFFReadRGBxxxxx‘及解决方法

今天在编译Opencv4.89.0的时候报了上面这个错误&#xff0c;原因是和anaconda环境冲突&#xff0c;因为此时是在激活的conda环境下编译的。 解决方法&#xff1a;conda deactivate 关闭conda环境&#xff0c;再进行编译&#xff0c;就OK了。记得要删除build缓存重新cmake然后ma…

【OpenCV-直方图与傅里叶变换】图像的基本变换、傅里叶变换、直方图

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows()1 直方图 1.1 cv2.calcHist(images,channels,mask,histSize,ra…

浪潮信息:构建高效、安全数据存储底座的领航者

浪潮信息在最新IDC发布的《中国企业级外部存储市场跟踪报告&#xff0c;2024Q1》中表现抢眼&#xff0c;以11.4%的市场销售额占比稳居中国存储市场第二&#xff0c;同比增长率高达13.6%&#xff0c;领跑头部厂商。这标志着浪潮信息在推动中国存储市场持续增长中扮演了关键角色&…

智能语音技术在人机交互中的应用与发展

摘要&#xff1a;本文主要探讨智能自动语音识别技术与语音合成技术在构建智能口语系统方面的作用。这两项技术实现了人机语音通信&#xff0c;建立起能听能说的智能口语系统。同时&#xff0c;引入开源 AI 智能名片小程序&#xff0c;分析其在智能语音技术应用场景下的意义与发…

电商平台的仅退款,如何“卷”出一个千亿IPO?

“快递柜第一股”&#xff0c;丰巢登陆港交所 当英国走进工业革命时代&#xff0c;狄更斯曾经这样形容那个充满着激情、创造和无限可能的世界&#xff0c;“这是最好的时代&#xff0c;也是最坏的时代。” 如今&#xff0c;随着运费险、仅退款、直播带货的出现&#xff0c;中…

【最新华为OD机试E卷-支持在线评测】字母组合(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

【Power Compiler手册】9.时钟门控(6)

使用安全寄存器插入时钟门控 你可以使用同一个时钟门控来门控三模冗余(TMR)寄存器,对所有安全寄存器进行操作,而不需要触碰或修改投票逻辑。 Design Compiler NXT 工具会自动检测是否使用了安全寄存器,并相应地插入时钟门控。该工具始终确保同一安全组内的安全寄存器共享…

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创 作者 | 海野 AI圈子的红人&#xff0c;AI大神Andrej Karpathy&#xff0c;曾是OpenAI联合创始人之一&#xff0c;特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能教育公司 &#xff0c;宣布将长期致力于AI原生教育。 近日&#xff…

Transformer(Attention is all you need)网络结构

Transformer(Attention is all you need) Transformer结构 Transformer是一个从Encode到Decode的一个框架。Transformer的编码器和解码器是基于自注意力的模块叠加而成的&#xff0c;源&#xff08;输入&#xff09;序列和目标&#xff08;输出&#xff09;序列的嵌入&#x…