C++ Qt开发:RadioButton单选框分组组件
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::Checked 、Qt::Unchecked 和Qt::PartiallyChecked 。 |
checkState() const |
获取单选按钮的选中状态,返回Qt::Checked 、Qt::Unchecked 或Qt::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;
}
}
C++ Qt开发:RadioButton单选框分组组件的更多相关文章
- MFC控件编程之复选框单选框分组框
MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...
- Vue 单选框与单选框组 组件
radio组件 v-model : 通过当然绑定的值与input上的value值来确定当前选中项. 在父作用域中通过active设置当前默认选中项,如果选中项发生改变后通过input事件通知传递到父 ...
- RadioGroup和RadioButton(单选框)
1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- Tkinter 之RadioButton单选框标签
一.参数说明 语法 作用 Radiobutton(root,text='xxxx') 单选框文本显示内容 Radiobutton(root,variable=color) 单选框索引变量,通过变量的值 ...
- [js开源组件开发]js文本框计数组件
js文本框计数组件 先上效果图: 样式可以自行调整 ,它的功能提供文本框的实时计数,并作出对应的操作,比如现在超出了,点击下面的按钮后,文本框会闪动两下,阻止提交.具体例子可以点击demo:http: ...
- Qt Quick 常用元素:RadioButton(单选框),CheckBox(复选框) 与 GroupBox(分组框)
先介绍一下 ExclusiveGroup. ExclusiveGroup (互斥分组)本身是不可见元素,用于将若干个可选择元素组合在一起, 供用户选择其中的一个选项.你可以在 ExclusiveGro ...
- tkiner中Radiobutton单选框控件(七)
Radiobutton控件 由于本次内容中好多知识都是之前重复解释过的,本次就不做解释了.不太清楚的内容请参考tkinter1-6节中的内容 import tkinter wuya = tkinter ...
- tkinter中Radiobutton单选框控件(七)
Radiobutton控件 由于本次内容中好多知识都是之前重复解释过的,本次就不做解释了.不太清楚的内容请参考tkinter1-6节中的内容 import tkinter wuya = tkinter ...
- form中 单选框 input[type="radio"] 分组
在form中有时候需要给单选框分组,这种情况下 可以通过给单选框设置相同的name来进行分组: <html> <head> <title> </title&g ...
- 可分组的选择框控件(MVVM下)(Toggle样式 仿造单选框RadioButton,复选框CheckBox功能)
原地址: http://www.cnblogs.com/yk250/p/5660340.html 效果图如下:支持分组的单选框,复选框样式和MVVM下功能的实现.这是项目中一个快捷键功能的扩展. 1, ...
随机推荐
- Git-入门使用资料
一.Git入门教程 Git入门视频,针对于小白快速入门,时常约2~3小时 Git入门视频 相关课件资料: https://pan.baidu.com/s/1U-s4OmkToXJ5Y7BbJ7w2Ww ...
- python flask 简单应用开发
转载请注明出处: Flask 是一个基于 Python 的微型 Web 框架,它提供了一组简洁而强大的工具和库,用于构建 Web 应用程序.Flask 的主要作用是帮助开发者快速搭建轻量级的.灵活的 ...
- shopee商品详情接口的应用
Shopee是东南亚和台湾地区最大的电子商务平台之一,成立于2015年,目前覆盖6个国家和地区.作为一家新兴电商平台,Shopee拥有快速增长的销售额和庞大的用户群体,为开发者提供了丰富的商业机会.其 ...
- Python 潮流周刊#18:Flask、Streamlit、Polars 的学习教程
你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中三则分享,不代表全部内容都是该主题,特此声明. 本周刊由 Python猫 出品,精心筛选国内外的 25 ...
- Git命令详细使用指南
Git命令详细使用指南 Git是一种广泛使用的版本控制系统,它可以帮助开发人员跟踪变更.协作项目和有效管理代码仓库.无论你是初学者还是有经验的用户,理解各种Git命令对于高效的代码管理至关重要. 安装 ...
- 15.3K Star,超好用的开源协作式数字白板:tldraw
大家好,我是TJ 今天给大家推荐一个开源协作式数字白板:tldraw. tldraw的编辑器.用户界面和其他底层库都是开源的,你可以在它的开源仓库中找到它们.它们也在NPM上分发,提供开发者使用.您可 ...
- 一文带你实现云上部署轻量化定制表单Docker
本文分享自华为云社区 <[华为云云耀云服务器L实例评测|云原生]自定制轻量化表单Docker快速部署云耀云服务器 | 玩转华为云>,作者:计算机魔术师. 华为云的云耀云服务器L实例备受推崇 ...
- oracle命令3 冷备份
用户管理的备份:备份脚本要自己写:备份哪些文件要自己选:恢复时要复制那些文件自己判断:恢复需要的日志,自己找: 备份,需要备份保存关键SCN信息的文件:一次完成的备份包括:控制文件,数据文件,日志文件 ...
- 【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Halcon中gen_gabor的比较。
最近有朋友在研究Halcon中gen_gabor的函数,和我探讨,因为我之前也没有怎么去关注这个函数,因此,前前后后大概也折腾了有一个星期去模拟实现这个东西,虽然最终没有实现这个函数,但是也是有所收获 ...
- 这次弄一下maven 多模块项目,用vscode新建一下,便于管理项目
首先 创建一个mvn项目, 直接在命令行执行, 原型生成: mvn archetype:generate 选一个maven quick start的template, 然后删除src和target文件 ...