Qt单选按钮

前言

本篇文章介绍Qt的单选按钮,就是QRadioButton
QRadioButton是一个选项按钮,可以打开(选中)或关闭(取消选中)。单选按钮通常向用户提供“众多之一”的选择。 在一组单选按钮中,一次只能选中一个单选按钮; 如果用户选择另一个按钮,则先前选择的按钮将关闭。

使用条件

必须包含头文件QRadioButton

#include <QRadioButton>

必须添加widgets模块

QT += widgets

继承关系

QRadioButton继承类QAbstractButton
同样继承QAbstractButton的还有

  • QCheckBox
  • QPushButton
  • QToolButton

我们主要讲QRadioButton

独占性

独占性是QAbstractButton子类特有的特性,对于继承自QAbstractButton的控件,独占性是指对于所有可选择的控件,同一个父窗体或者按钮组下,同一时间只能选中一个控件,我们分析一下这句话:

  • 必须是QAbstractButton子类
  • 可选择的控件,首先独占性必须是可选择的控件
    在这里插入图片描述

也就是这个属性必须是选中的。

  • 独占性特性只是对同一个父窗体或者按钮组的其他控件来说,每个按钮组是独立的,不相互影响

autoExclusive

可以通过

bool autoExclusive() const;

获取当前控件是否具有独占性
对于继承自QAbstractButton的控件,默认只有QRadioButton是true,其他都是false

setAutoExclusive(bool)

可以通过

void setAutoExclusive(bool);

改变控件的独占性,看下面的窗口:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果1234四个控件都设置为可选中,并且将3和4的独占性设置为true,如果1或者2选中的话,我们点击按钮的时候1或者2就不会在选中了,因为按钮此时独占。

按钮组

多个单选按钮可以放进一个按钮组中,这样,每个按钮组的单选按钮就可以实现多选一。

在设计器界面,选中需要放进一个按钮组的单选按钮,然后右键,选择指定到按钮组,新建按钮组。这个时候这几个单选按钮就在一个按钮组了。
在这里插入图片描述

选中事件

如果给每一个单选按钮添加一个选中事件可能比较麻烦,可以在代码中添加一个槽函数,然后让所有的单选按钮的clicked信号都关联到这个槽函数,这样在槽函数中通过判断单选按钮是否选中就可以了,下面是一个代码的例子

ui->setupUi(this);
connect(ui->radNon,SIGNAL(clicked()),this,SLOT(on_rad_clicked()));
connect(ui->radWin,SIGNAL(clicked()),this,SLOT(on_rad_clicked()));
connect(ui->radApp,SIGNAL(clicked()),this,SLOT(on_rad_clicked()));
on_rad_clicked();

注意:

  • 需要在ui->setupUi(this)之后再连接信号和槽
  • 需要连接以后调用一下槽函数,不然出始的选中不会执行槽函数

猜你喜欢

转载自blog.csdn.net/b1049112625/article/details/135817711