文章目录
- Qt
-
- [3. Qt按钮类控件](#3. Qt按钮类控件)
-
- [Push Button](#Push Button)
- [Radio Button](#Radio Button)
- [Check Box](#Check Box)
Qt
3. Qt按钮类控件
Push Button
使用 QPushButton 表示一个按钮。当点击按钮时可以触发各种事件。QPushButton 继承自 QAbstractButton。这个类是一个抽象类。是其他按钮的父类。
PushButton和QAbstractButton的继承关系:
我们看到QAbstractButto 是继承于QWidget, 所以 QPushButton 的核心功能主要来自 QAbstractButton 。当然 QAbstractButton 的功能也都比较简单。
** 因为 QAbstractButton 继承于 QWidget,QWidget 里的各种属性用法QAbstractButton,QAbstractButton也派生了很多新的用法:**
属性 | 说明 |
---|---|
text | 按钮中的文本 |
icon | 按钮中的图标 |
iconSize | 按钮中图标的尺寸 |
shortCut | 按钮对应的快捷键 |
autoRepeat | 按钮是否会重复触发. 当鼠标左键按住不放时,如果设为true,则会持续产生鼠标点击事件;如果设为false,则必须释放鼠标,再次按下鼠标时才能产生点击事件. (相当于游戏手柄上的 "连发" 效果) |
autoRepeatDelay | 重复触发的延时时间. 按住按钮多久之后,开始重复触发. |
autoRepeatInterval | 重复触发的周期 |
PushButton 又继承于 QAbstractButton,所以QAbstractButton 提供的功能 PushButton 也都可以使用。
- setIcon可以为我们的按钮设置图标。
-
上面按钮中的图标很小,我们可以使用setIconSize来设置按钮中图片的大小,参数为QSize(50,50),代表QIcon元素的长度和宽度。
-
我们还可以移动这个按钮到合适的位置。
Radio Button
QRadioButton 是单选按钮,可以让我们在多个选项中选择一个。作为 QAbstractButton 和 QWidget 的子类,上面介绍的属性和用法,对于 QRadioButton 同样适用。
属性 | 说明 |
---|---|
checkable | 是否能选中 |
checked | 是否已经被选中。checkable 是 checked 的前提条件。 |
autoExclusive | 是否排他。选中一个按钮之后是否会取消其他按钮的选中。对于 QRadioButton 来说默认就是排他的。 |
-
Radio Button是单选按钮,在界面上如果有多个Radio Button,只能选中其中一个Radio Button,当然如果想要选择多个按钮,可以将按钮进行分组操作。
-
我们实现性别选择器,通过Radio Button进行选项的唯一选择,并且为它创建槽函数,每次切换性别时,界面都会在窗口和终端打印选择的结果。
- setChecked 设置 Radio Button 按钮的是否为默认选中。
- setEnabled 设置 Radio Button 按钮的禁用状态。被禁用的按钮无法被选中,也无法响应任何输入。
** click、press、release、toggled 的区别:**
・clicked 表示一次 "点击"。
・pressed 表示鼠标 "按下"。
・released 表示鼠标 "释放"。
・toggled 表示按钮状态切换。
我们可以引入 QButtonGroup 对按钮进行分组。QButtonGroup 是一个容器类,主要用于管理多个按钮的行为,尤其是单选按钮和复选按钮。
- 我们通过 QButtonGroup 实现一个点餐选择界面,先在可视化界面进行控件的创建并且移动到合适的位置。但是此时这六个 QRadioButton 之间都是排他的,我们希望每一组内部来控制排他,但是组和组之间不能排他。
- 创建三个 QButtonGroup,将对应的 RadioButton 设置到对应的 QButtonGroup 中,这样就可以完成我们想要实现的功能了。
Check Box
QCheckBox 表示复选按钮,可以允许选中多个。
和 QCheckBox 最相关的属性也是 checkable 和 checked,都是继承自 QAbstractButton。至于 QCheckBox 独有的属性 tristate 用来实现 "三态复选框"。
- Check Box 是复选框不会受其他 Check Box被选择的影响。
- isChecked()可以返回当前的 Check Box 是否处于被选中状态。