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

news/2024/9/14 2:09:20/ 标签: qt, 开发语言

文章目录

  • QPushButton
    • QPushButton 的基本功能介绍
    • QPushButton 添加快捷键
      • 通过图片实现 上下左右
      • 实现方向键的槽函数
      • 设置快捷键
      • 连发功能
  • QRadioButton
    • QRadioButton 的基本功能介绍
    • 通过 QRadioButton 选择性别
      • 具有排他效果
      • 禁用 选项
    • 槽函数的使用情况
    • 基于 QRadioButton 实现一个简单的模拟点餐的功能
      • 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中


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



http://www.ppmy.cn/news/1516599.html

相关文章

爬虫使用代理IP:提升数据抓取效率的实践

爬虫使用代理IP的技巧和方法 在进行网络爬虫时,使用代理IP可以帮助你提高数据抓取效率和保护隐私。本文将介绍爬虫使用代理IP的技巧和方法,帮助你更好地进行数据抓取。 为什么爬虫需要使用代理IP 在进行大规模数据抓取时,目标网站可能会检…

数据仓库: 4- 数据质量管理 5- 元数据管理

目录 4- 数据质量管理4.1 数据清洗4.1.1 数据清洗的重要性4.1.2 数据清洗常见的问题4.1.3 数据清洗的步骤4.1.3.1 数据质量评估:4.1.3.2 制定清洗规则:4.1.3.3 执行清洗操作:4.1.3.4 验证清洗结果:4.1.3.5 迭代优化: 4.1.4 数据清洗的常用方法4.1.5 数据清洗的最佳实践4.1.6 总…

外贸管理系统采购销售报关计算机毕业设计VUE/PYTHON/MYSQL

开发一个基于Vue、Python和MySQL的外贸管理系统,用于处理采购、销售以及报关等业务流程。这样的系统通常涉及前端界面展示、后端逻辑处理以及数据库存储等多个部分。下面是一些关键组件的设计建议:1. 技术栈选择 前端: Vue.js 后端: Python (Flask/Djang…

大数据分析与挖掘技术实训室解决方案

一、大数据分析与挖掘技术概述 大数据分析与挖掘技术是指运用算法、工具和技术处理和分析大规模数据集的过程。这些数据集来源于多个渠道,例如传感器数据、社交媒体数据、网络日志和金融交易记录等。其目标是在这些海量数据中发现有价值的信息、模式和趋势&#xf…

【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略

前言 🍊缘由 黑神话悟空玩家必备,数据库隔离级别完全解读 🐣闪亮主角 大家好,我是JavaDog程序狗 今天借着黑神话悟空的热度,跟大家分享一下数据库隔离级别,也是面试必备的八股文 😈你想听的…

使用阿里的EasyExcel导入数据

工作遇到一种情况,在导入excel的时候数量过多,导致占用内存太大最终OOM.为了避免这样的情况再次出现,更换easyPoi为EasyExcel,它是一行一行读,非常节省内存且快速. 首先依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core<…

对想学习人工智能或者大模型技术从业者的建议

“ 技术的价值在于应用&#xff0c;理论与实践相结合才能事半功倍” 写这个关于AI技术的公众号也有差不多五个月的时间了&#xff0c;最近一段时间基本上都在保持日更状态&#xff0c;而且写的大部分都是关于大模型技术理论和技术方面的东西。‍‍‍‍‍‍‍‍‍ 然后最近一段…

Mozilla为本地音频到文本翻译开发Whisperfile引擎

Mozilla Ocho 小组正进行 Mozilla 的"创新和实验"。Llamafile 用于将大型语言模型以单个文件的形式发布&#xff0c;以便在不同的硬件/软件间轻松执行。Whisperfile 是一项将音频轻松转化为文本的新引擎。 正如其名称所暗示的&#xff0c;Whisperfile 是围绕 OpenAI…

RabbitMQ如果有100万消息堆积在MQ,如何解决(消息堆积如何解决)面试版

什么情况下产生消息堆积 消息堆积&#xff1a;当生产者发送消息的速度 超过了 消费者处理消息的速度&#xff0c;就会导致队列中的消息堆积。 消息堆积会产生的问题&#xff1a;直到队列存储的消息达到上限。之后发送的消息就会成为死信&#xff0c;可能会被丢弃。 解决消息…

数据库表的nb3和sql后缀的处理方式

后缀是sql的话就直接运行sql文件 就可以把数据库添加到本地了&#xff08;像这样&#xff09; 右键你选择存放的数据库 -- 运行sql文件 -- 选择后缀是sql的文件 如果同事给你了一个后缀是nb3的话 那么就需要你去还原了 你想把这个表加到哪个库下就选择 右键备份 -- 还原备份从…

数据库查询大量数据避免内存溢出的方法

原理就是分批查询。每次查询一定数量数据之后记录id&#xff0c;进行数据处理之后再继续查询继续处理&#xff0c; allFrameObject mapper.findAllFrameObjectByMaxId(minTime, beginRow, 1000); while (CollectionUtils.isNotEmpty(allFrameObject)) {beginRow allFrameObj…

如何构建小学至大学素质评价档案系统 —— php Vue 实践指南

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

GPIO(通用输入/输出)、中断(hal库)

目录 GPIO&#xff08;通用输入/输出)&#xff08;hal库&#xff09; GPIO工作模式 推挽输出&#xff08;Push-Pull Output&#xff09; 开漏输出&#xff08;Open-Drain Output&#xff09; 复用推挽输出&#xff08;Alternate Function Push-Pull Output&#xff09; 复…

金融涉案账户压降行动的实施成效与挑战

2024年上半年我国出台了关于金融行业相关管理办法 1 - 5 号令&#xff0c;不断完善相关法律法规&#xff0c;加强对欺诈行为的打击力度。加强了对互联网企业的监管力度&#xff0c;要求企业加强内部管理&#xff0c;建立健全用户信息保护机制&#xff0c;防止用户信息泄露和被滥…

Lora微调训练参数解读

前言 通过前面两次微调训练欺诈文本分类微调&#xff08;六&#xff09;&#xff1a;Lora单卡和欺诈文本分类微调&#xff08;七&#xff09;—— lora单卡二次调优&#xff0c;我们已经初步理解了微调的整个过程&#xff0c;里面涉及到不少的参数配置&#xff0c;这篇文章就对…

redis面试(二十三)写锁释放

先加了写锁&#xff0c;后面再次加写锁或者读锁 anyLock: { “mode”: “write”, “UUID_01:threadId_01:write”: 2, “UUID_01:threadId_01”: 1 } 写锁的释放lua脚本在这里 RedissonWriteLock.unlockInnerAsync() 比如说现在的参数是这 KEYS[1] anyLock KEYS[2] redi…

卖旧电脑前怎么彻底清除数据?卖旧电脑不留隐患

在科技日新月异的今天&#xff0c;电脑已成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;随着技术的不断进步&#xff0c;我们可能会考虑更换新的电脑设备&#xff0c;而将旧的电脑出售或转让。 在卖旧电脑前&#xff0c;彻底清除电脑中的数据至关重要&#xff0c;…

leetcode46:全排列

全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 List<List<Integer>> list new ArrayList<>();public List<List<Integer>> permute(int[] nums) {LinkedList<Integer> …

Shader 中的渲染顺序

1、深度测试和深度写入 有了深度测试和深度写入发挥作用让我们不需要关心不透明物体的渲染顺序比如一个物体A 挡住了 物体B&#xff0c;即使底层逻辑中 先渲染A&#xff0c;后渲染B&#xff0c;我们也不用担心 B的颜色会把A覆盖&#xff0c;因为在进行深度测试时&#xff0c;远…

Java-BatchProcessingUtil结合CompletableFuture工具类

为了结合批处理与 CompletableFuture 并使用自定义线程池,我们可以创建一个功能全面的工具类 BatchProcessingUtil。这个工具类将支持以下功能: 批处理遍历列表中的每个元素。 使用自定义线程池执行批处理任务。 返回一个 CompletableFuture 对象以支持异步回调和结果处理…