【Qt】常见控件 —— QPushButton | QRadioButton

文章目录

  • QPushButton
  • QRadioButton
    • [QRadioButton 的基本功能介绍](#QRadioButton 的基本功能介绍)
    • [通过 QRadioButton 选择性别](#通过 QRadioButton 选择性别)
    • 槽函数的使用情况
    • [基于 QRadioButton 实现一个简单的模拟点餐的功能](#基于 QRadioButton 实现一个简单的模拟点餐的功能)
      • [QButtonGroup 类 ------ 对单选按钮进行分组](#QButtonGroup 类 —— 对单选按钮进行分组)

QPushButton

QPushButton 的基本功能介绍

QPushButton 表示一个按钮


text ------ 按钮中的文本
icon ------按钮中的图标
iconSize ------ 按钮中的图标的尺寸
shortCut ------按钮对应的快捷键
autoRepeat ------按钮是否会被重复触发 当鼠标左键按住不放时 如果设为true 则会持续产生鼠标点击事件
如果设为false 则必须释放鼠标 再次按下鼠标时才能产生点击事件


QPushButton 添加快捷键

通过图片实现 上下左右

创建 qrc 文件 并把上下左右 狗头 图片 放入其中


设置按钮 QPushbutton_target(狗头)
QPushbutton_up(向上)
QPushbutton__down(向下)
QPushbutton_left(向左)
QPushbutton_right(向右)


实现方向键的槽函数

QPushbutton_target 中 通过 setIcon 函数 将狗头设置到输入框中
通过 setIconSize 函数 将图片大小调为 90 90


QPushbutton_target 中 通过 setIcon 函数 将向上图片设置到输入框中
通过 setIconSize 函数 将图片大小调为 40 40


QPushbutton_target 中 通过 setIcon 函数 将向左图片设置到输入框中
通过 setIconSize 函数 将图片大小调为 40 40


QPushbutton_target 中 通过 setIcon 函数 将向右图片设置到输入框中
通过 setIconSize 函数 将图片大小调为 40 40


QPushbutton_target 中 通过 setIcon 函数 将向下图片设置到输入框中
通过 setIconSize 函数 将图片大小调为 40 40


QPushbutton_up 表示向上
QPushbutton_down 表示向下
QPushbutton_left 表示向左
QPushbutton_right 表示向右
先通过 geometry 函数 获取 target 位置
再通过 setGeometry 函数 若为向上 则将对应的y 减5 即向上移动 若为向下 则将对应的y 减加5 即向下移动
若为向左 则将对应的x 减5 即向左 移动 若为向右 则将对应的x 加5 即向右移动


设置快捷键

通过 函数 setShortcut 参数为 QKeySequence (一组按键序列) 对象
(按下的快捷键 不一定是单个按键 也可能是组合键)

将 PushButton_up (向上按钮 ) 替换成 快捷键 w
将 PushButton_down (向上按钮 ) 替换成 快捷键 s
将 PushButton_left (向上按钮 ) 替换成 快捷键 a
将 PushButton_right (向上按钮 ) 替换成 快捷键 d


此时运行程序 当输入 w 时 狗头就会向上 输入 s 时 狗头就会向下
输入 a 时 狗头就会向左 输入 d 时 狗头就会向右


连发功能

虽然长按 w s a d 可以使得狗头可以连续移动
但是 长按 鼠标 却不可以
借用 Qt 中的 autoRepeat(true)


将 PushButton_up PushButton_down PushButton_left PushButton_right 的向上下左右按钮 都具备连发功能

QRadioButton

QRadioButton 的基本功能介绍

QRadioButton 是单选 按钮 可以在多个选项中选择一个

checkable ------ 是否能被选中
checked ------是否被选中 checkabled 是checked的前提条件
autoExclusive ------是否排他
选中一个按钮之后是否会取消其他按钮的选中
对于 QRadioButton 来说默认就是排他的


通过 QRadioButton 选择性别

通过 QRadioButton (单选按钮) 设置 男 女 其他 三个 按钮
分别设置对应的槽函数 输出文本
当 用鼠标点击 男 女 其他 时 clicked 接收到该操作 并发送信号 给槽函数 输出对应的文本


具有排他效果

默认具有排他效果 当选中其中一个时 就会自动取消其他的选中状态
(选中男后 再选中女 就会取消 选中男的状态)


通过 setChecked 函数 添加true 说明 按钮已经被选中
再次运行程序 默认选择性别为 男


禁用 选项

通过 setCheckable 函数 添加false 说明 洽谈按钮已经被禁用
checkable 只能够让按钮不被选中 但是仍然可以响应点击事件


通过 Enable 函数 添加 false 此时就可以既让按钮不被选中 又不能响应点击事件

槽函数的使用情况

创建槽函数 分别 对应 Qt Designer中的 按钮1 按钮2 按钮3 按钮4


按钮1 使用 clicked(bool) 来生成 槽函数
checked 表示 当前 radioButton的 选中状态

当多次点击 按钮1时 发现 clicked 可以一直进行响应


按钮2使用 pressed() 来生成槽函数

鼠标只要按下 就可以触发


按钮3使用 released() 来生成槽函数

鼠标按下不会有响应 当鼠标抬起来 就会触发


按钮4使用 toggled(bool) 来生成 槽函数
当前 checked 状态发生改变 就会触发这个信号

当第一次点击按钮4时 checked 状态由 false 变为 true 触发信号
多次点击按钮4时 发现 并不会再触发


当按下按钮4后 再次按下按钮1 时
由于 checked 的状态 由 true 变为 false 则 toggle 再次触发信号


基于 QRadioButton 实现一个简单的模拟点餐的功能

当选择 巨无霸后 再次选择麦辣鸡翅时发现 巨无霸的选项没了
RadioButton 默认是 排他 的


QButtonGroup 类 ------ 对单选按钮进行分组

一旦界面上 存在多组 单选 按钮的时候 希望组和组之间不要有影响


QButtonGroup类 针对单选按钮进行分组
创建 group1 group2 group3 三个组


通过 addButton 函数 将 单选按钮添加到 组中
将 radiobutton radiobutton_2 radiobutton_3 放入 group1中
将 radiobutton_4 radiobutton_5 radiobutton_6 放入 group2中
将 radiobutton_7 radiobutton_8 放入 group3中


就可以在不同的组之间 选择各自的食物了


相关推荐
蓝桉80220 分钟前
图片爬取案例
开发语言·数据库·python
逸狼26 分钟前
【JavaEE进阶】Spring DI
java·开发语言
my_styles1 小时前
2025-alibaba-Sentinel组件
java·开发语言·sentinel
禁默1 小时前
C++之旅-C++11的深度剖析(1)
开发语言·c++
繁依Fanyi2 小时前
巧妙实现右键菜单功能,提升用户操作体验
开发语言·前端·javascript·vue.js·uni-app·harmonyos
程序员黄同学2 小时前
解释 Vue 中的虚拟 DOM,如何通过 Diff 算法最小化真实 DOM 更新次数?
开发语言·前端·javascript
~kiss~2 小时前
Rust~二刷异步逻辑
开发语言·后端·rust
SomeB1oody2 小时前
【Rust中级教程】2.7. API设计原则之灵活性(flexible) Pt.3:借用 vs. 拥有、`Cow`类型、可失败和阻塞的析构函数及解决办法
开发语言·后端·性能优化·rust
m0_748240252 小时前
python轻量级框架-flask
开发语言·python·flask
论迹2 小时前
【JavaEE】-- 多线程(初阶)2
java·开发语言·java-ee