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

本文详细介绍了Qt中的RadioButton控件,包括QAbstractButton类的基础知识、QRadioButton的功能与属性、如何创建和使用QRadioButton进行性别选择,以及QButtonGroup的使用实现单选按钮分组。还对比了click、press、release和toggled信号的区别。
摘要由CSDN通过智能技术生成

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

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

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


一、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;
}


在这里插入图片描述

  • 30
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Qt是一种流行的跨平台C++应用程序框架,在GUI开发方面非常出色。Qt包含大量的控件,其中一个是树形控件QTreeView。这个控件允许用户显示带有树形视图的数据模型,它是QAbstractItemView的派生之一。 QTreeView控件具有以下特点: 1. 显示数据模型 - QTreeView控件显示控件绑定的数据模型。用户可以打开和关闭节点以显示或隐藏子节点。 2. 树的构建 - 树的层次结构是通过节点之间的父子关系来定义的。最上面的节点称为根节点,其余的为子节点。 3. 定制化 - QTreeView控件可以被用户定制。用户可以通过设置控件的颜色、字体、大小和对齐方式等来将控件表现为自己想要的样子。 4. 功能强大 - QTreeView控件有很多内置的功能,包括可排序、可过滤、可编辑等等。它也允许用户通过自定义delegate,来实现额外的交互行为。 下面是一些使用QTreeView控件的示例: 1. 创建一个QTreeView控件QTreeView *treeView = new QTreeView(parent); 2. 设置它的数据模型: QStandardItemModel *model = new QStandardItemModel(parent); treeView->setModel(model); 3. 填充数据模型: QStandardItem *rootItem = model->invisibleRootItem(); QStandardItem *item1 = new QStandardItem("Item 1"); QStandardItem *item2 = new QStandardItem("Item 2"); rootItem->appendRow(item1); rootItem->appendRow(item2); 4. 显示控件: treeView->show(); QTreeView控件是一个非常强大的控件,可以用于各种情况下。它可以轻松地显示大量的数据,并让用户轻松地翻阅它们。在GUI开发中,QTreeView控件是一个非常有用的控件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Duck Bro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值