写点什么

Qt | 按钮控件的使用 QRadioButton

作者:YOLO.
  • 2022 年 9 月 07 日
    河北
  • 本文字数:1301 字

    阅读完需:约 4 分钟

Qt | 按钮控件的使用 QRadioButton

前言:

单选按钮控件提供了一个带有文本标签的单选按钮,即单选框。单选按钮可以切换选中(checked)或未选中(unchecked)状态,通常使用在多选一的情况下,也就是在一组单选按钮中,只能选中其中一个,同时只有一个单选按钮处于选中(checked)状态。如果一个单选按钮被选中,之前被选中的按钮就会变成未选中(unchecked)状态。

QRadioButton 类提供了一个文本标题(text label)和一个图标(small icon)。文本标题可以在构造函数中设置,也可以通过调用 setText() 函数设置,而图标只能通过**setIcon()**函数来设置。

对 QRadioButton 进行分组:

为了让单选按钮之间互斥,必须对单选按钮进行分组。把多个单选按钮放在“同一个父窗体”或者“同一个按钮组”中实现了分组。

如果没有进行分组,那么相同父窗体的单选按钮都将具有相互排他性。如果想要在一个窗体实现展示多组单选按钮的效果,就需要显示地对它们进行分组,可以使用 QGroupBox 或者 QButtonGroup 实现,还可以使用组合框、QWidget 等。建议使用 QButtonGroup,因为它仅仅是一个容器,对于里面的子按钮,QButtonGroup 提供了比 QGroupBox 更为方便的信号和槽机制方面的操作。

QRadioButton 的信号:

  • toggled():在单选按钮状态(开、关)切换时发出。

  • clicked():单击单选按钮时发出。一般在单选按钮状态改变时才有必要去响应,所以 toggled()信号更适合状态监控。

需要注意的是: 单选按钮无论是被打开还是被关闭,都会发送一个 toggled()信号,参数为 bool,记录是开还是关,所以可以根据单选按钮的状态变化处理一些事情。

如果组内有很多个单选按钮,并且想跟踪 toggled 或 clicked 状态时,不需要逐个来建立关联,如果使用 QButtonGroup 来管理,可以用 buttonToggled()buttonClicked() 来处理组内所有按钮的 toggled()和 clicked()。

QButtonGroup 类:

QButtonGroup 提供了一个抽象容器,可以在其中放置按钮控件,以便管理组中每个按钮的状态。

  • addButton():在 QButtonGroup 中添加一个按钮。

  • removeButton():在 QButtonGroup 中删除一个按钮。

void addButton(QAbstractButton *button, int id = -1);参数 button 为指向按钮对象的指针,id 为要设置给按钮 button 的 id 号,如果 id 是-1,就会自动赋一个值给 id。自动分配的 id 保证为负数,从-2 开始。自己分配的 id 要使用正数,以免冲突。

分配 id 之后,可以通过 QButtonGroup 的成员函数 checkedId() 来获得 button 的 id。

QRadioButton 的使用:

//创建在.h中QButtonGroup *groupButton1;//动态创建一个QButtonGroupgroupButton1 = new QButtonGroup(this);//在QButtonGroup中添加三个radioButton,并分配id号groupButton1->addButton(ui->radioButton1, 0);groupButton1->addButton(ui->radioButton2, 1);groupButton1->addButton(ui->radioButton3, 2);//默认选中第三个radioButtonui->radioButton2->setChecked(true);//为三个radioButton添加信号和槽的连接connect(ui->radioButton1, SIGNAL(clicked(bool)), this, SLOT(radioButton1Clicked()));connect(ui->radioButton2, SIGNAL(clicked(bool)), this, SLOT(radioButton2Clicked()));connect(ui->radioButton3, SIGNAL(clicked(bool)), this, SLOT(radioButton3Clicked()));
复制代码


发布于: 刚刚阅读数: 6
用户头像

YOLO.

关注

还未添加个人签名 2022.05.06 加入

还未添加个人简介

评论

发布
暂无评论
Qt | 按钮控件的使用 QRadioButton_qt_YOLO._InfoQ写作社区