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 的使用:
版权声明: 本文为 InfoQ 作者【YOLO.】的原创文章。
原文链接:【http://xie.infoq.cn/article/ecd2c18f72422d973a02d21fb】。未经作者许可,禁止转载。
评论