Qt单选按钮

前言

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

使用条件

必须包含头文件QRadioButton

#include 

必须添加widgets模块

QT += widgets

继承关系

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

  • QCheckBox
  • QPushButton
  • QToolButton

我们主要讲QRadioButton

独占性

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

  • 必须是QAbstractButton子类
  • 可选择的控件,首先独占性必须是可选择的控件
    Qt单选按钮_第1张图片

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

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

autoExclusive

可以通过

bool autoExclusive() const;

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

setAutoExclusive(bool)

可以通过

void setAutoExclusive(bool);

改变控件的独占性,看下面的窗口:
Qt单选按钮_第2张图片

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

按钮组

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

在设计器界面,选中需要放进一个按钮组的单选按钮,然后右键,选择指定到按钮组,新建按钮组。这个时候这几个单选按钮就在一个按钮组了。
Qt单选按钮_第3张图片

选中事件

如果给每一个单选按钮添加一个选中事件可能比较麻烦,可以在代码中添加一个槽函数,然后让所有的单选按钮的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)之后再连接信号和槽
  • 需要连接以后调用一下槽函数,不然出始的选中不会执行槽函数

你可能感兴趣的:(程序设计-Qt,qt,开发语言)