首页 > 编程语言 >C++ Qt开发:RadioButton单选框分组组件

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

时间:2023-12-24 19:34:17浏览次数:48  
标签:Qt 单选框 C++ radioButton ui 选中 按钮 单选


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是一种简单而有效的界面元素,用于在多个互斥的选项中进行单一选择。

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

谈到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;
    }
}

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

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

当然如果读者不想使用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;
    }
}


标签:Qt,单选框,C++,radioButton,ui,选中,按钮,单选
From: https://blog.51cto.com/lyshark/8956797

相关文章

  • C++ Qt开发:SpinBox数值微调框组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSpinBox精度数值组件的常用方法及灵活运用。QSpinBox是Qt框架中的一个部件(Widget),用于提供一个方便......
  • C++ Qt开发:LineEdit单行输入组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍LineEdit单行输入框组件的常用方法及灵活运用。在Qt中,QLineEdit是一个用于输入单行文本的控件,它提......
  • C++ Qt开发:PushButton按钮组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QPushButton按钮组件的常用方法及灵活运用。QPushButton是Qt框架中用于创建按钮的组件类,是QWid......
  • C++ Qt开发:使用顺序容器类
    当我们谈论编程中的数据结构时,顺序容器是不可忽视的一个重要概念。顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构。它们提供了简单而直观的方式来组织和管理数据,为程序员提供了灵活性和性能的平衡。Qt中提供了丰富的容器类,用于方便地管理和操作数据。这些容器......
  • C++ Qt开发:使用关联容器类
    当我们谈论编程中的数据结构时,顺序容器是不可忽视的一个重要概念。顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构。它们提供了简单而直观的方式来组织和管理数据,为程序员提供了灵活性和性能的平衡。Qt中提供了丰富的容器类,用于方便地管理和操作数据。这些容器......
  • C++ Qt开发:Qt的安装与配置
    Qt是一种C++编程框架,用于构建图形用户界面(GUI)应用程序和嵌入式系统。Qt由Qt公司(前身为Nokia)开发,提供了一套跨平台的工具和类库,使开发者能够轻松地创建高效、美观、可扩展的应用程序。其被广泛用于开发桌面应用程序、嵌入式系统、移动应用程序等。无论是初学者还是经验丰富的开发者,Q......
  • C++ Qt开发:字符串QString容器
    在Qt框架中,QString是一个强大而灵活的字符串容器,专为处理Unicode字符而设计。它提供了许多方便的方法来操作和处理字符串,使得在跨平台开发中能够轻松地进行文本操作。QString是Qt开发中不可或缺的一部分,它的灵活性和强大的功能使其成为处理文本和字符串操作的理想选择。本篇......
  • C++的nan、inf
    ( 2022-09-3000:28:51编辑完的,雪藏了很久,今天有时间了,把浮点数除法搜来补上)上周地图经纬度出的bug搞得我精疲力竭,总是莫名其妙的就点就飞到不知道哪里去了。qt版本又旧没有isNan函数,愣是找了2天多。最后发现是double数据传递给float出问题了。软件搭架子的工作多了,数值计算这里的......
  • C++ Qt开发:如何使用信号与槽
    在Qt中,信号与槽(SignalandSlot)是一种用于对象之间通信的机制。是Qt框架引以为傲的一项机制,它带来了许多优势,使得Qt成为一个强大且灵活的开发框架之一。信号与槽的关联通过QObject::connect函数完成。这样的机制使得对象能够以一种灵活而松散耦合的方式进行通信,使得组件之间的交互......
  • [Bookmark]-C/C++
    C++类成员函数的函数指针sprintf与printf源码分析printf源码C语言实现简单的printf功能C中printf函数的实现原理TheGNUCLibraryglibc-printfC语言中的pow函数使用方法及注意事项,和常见报错原因,且分享实战中的使用注:仅用于记录使用过程中涉及的相关文档。......