常用控件(一)

常用控件 一

  • 按钮类控件
    • QPushButton
    • QRadioButton
    • QCheckBox

按钮类控件

QPushButton

使用QPushButton表示一个按钮,这是我们当前最熟悉的一个控件了;
QPushButton继承自QAbstractButton,这个类是个抽象类,是其他按钮类的父类;
在这里插入图片描述

QAbstractButton的一些属性:

属性说明
text按钮文本
icon按钮图标
iconSize按钮图标大小
shortCut按钮对应的快捷键
autoRepeat按钮是否会重复触发;如果设置为true,鼠标左键一直按着,则会产生持续的鼠标点击事件;如果设置为false,鼠标左键一直按着,则不会触发持续的鼠标点击事件,只有当鼠标松开,再次按下才会触发一次鼠标点击事件;
autoRepeatDelay重复触发的延时时间,按住按钮多久过后,开始重复触发
autoRepeatInterval重复触发的周期
  1. QAbstractButton作为QWidget的子类,当然也继承了QWidget的属性,上面介绍的属性是QAbstractButton的单独属性,那么前面介绍的QWidget核心属性对应QAbstractButton同样适用;
  2. Qt的API设计风格非常清晰,上面列出的属性都是可以获取和设置的;eg:获取文本:text();设置文本:setText(“你好”);
  3. 事实上QPushButton的核心功能都是QAbstractButton提供的,自身属性比较少;

eg1.设置带有图标的按钮;

  1. 准备图标
    在这里插入图片描述
  2. 创建qrc文件,并且将上述图标导进去;
    在这里插入图片描述
  3. 编写代码,创建带有图标的按钮;
    在这里插入图片描述
  4. 运行结果如下:
    在这里插入图片描述
    如果我们觉得,图标的大小太小了,那么我们可以通过setIconSize(const QSize&)接口来设置图标的大小:
    在这里插入图片描述

eg2 .设置带快捷键的按钮
设计思路:在界面上主要有5个按钮控件,其中四个按钮控件为方向键,一个按钮控件为target目标控件,当我们使用鼠标点击或者快捷键操作这四个控件的时候,那么这个target目标控件将会跟随着被点击的控件所指的方向所移动;

  1. 导入图标的qrc文件:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 通过图形化界面创建对应的图像,并且通过图形化界面的方式来为每个按钮设置图标:
    在这里插入图片描述
  3. 设置对应的槽函数
    在这里插入图片描述
  4. 设置快捷键
    在这里插入图片描述
  5. 运行结果如下:
    在这里插入图片描述
    不仅可以通过鼠标点击的方式来实现坤坤的移动,同时也可以通过我们设置的"w"、“a”、“s”、"d"来进行操作,忽略大小写;
    当然,我们除了上诉写法之外来设置快捷键,也可以通过下面的方式来进行设计:
    在这里插入图片描述
    也能是实现出快捷键的效果,同时,该方法在设计组合键的时候也比较方便,比如:现在我们就可以设计Ctrl+W来作为向上移动的快捷键:
    在这里插入图片描述
    这样设计过后,w、s、a、d快捷键就不起作用了,只有加上Ctrl才会有反应;
    但是通过上面的使用,我们发现,当我们一直按下快捷键的时候,坤坤会一直移动,而当我们鼠标一直左键按在移动按钮上的时候坤坤没有移动,只有当我们松开了,坤坤才会移动一下,因此,我们需要开启按钮的鼠标持续事件属性:
    在这里插入图片描述
    经过我们的设置过后,我们发现现在鼠标一直按着方向键确实能使坤坤一直移动;

QRadioButton

QRadioButton是单选按钮,可以当我们在多个选项中选择一个;
作为QAbstractButton的子类上面介绍的属性同样也适用于QRadioButton;

QAbstractButton 中和 QRadioButton 关系较⼤的属性

属性说明
checkable是否能被选择;true表示能,false表示不能
checked检测是否被选中;该前提是checkable开启;
autoExclusive是否排他,对于QRadioButton控件来说,他具有排他属性,也就是选中当前单选按钮过后,其它单选按钮会被取消选中状态,对于一个单选按钮来说默认是排他的

说了这么多,单选按钮长啥样?
我们来看看:
在这里插入图片描述

eg1 .选择性别
设计思路:
在界面上有4个控件,一个Label控件,用来显示一些文字;
3个RadioButton控件,一个表示男、一个表示女、一个表示保密

  1. 设计图如下:
    在这里插入图片描述
  2. 设置对应的槽函数
    在这里插入图片描述
  3. 运行结果:
    在这里插入图片描述
    当前的代码中程序启动的时候,什么也没有被选中,我们可以让程序的默认选项为男,因此我们的代码可以按照如下更改:
    在这里插入图片描述
    同理,我们也可以让保密选项无法被选中,这里主要有两种方式来实现:
    ①调用setEnabled直接禁用“其它”控件:
    在这里插入图片描述
    ②调用setCheckable() 让这个控件本身无法被选中,这里的选中是说无法被打勾,但是可以被点击:
    在这里插入图片描述

QAbstractButton的内置信号:
在这里插入图片描述
clicked(): 点击,即鼠标左键按下+松开就会触发该信号;
clicked(bool): 点击,即鼠标左键按下+松开会触发该信号,在触发该信号时,会将该控件是否被选中的状态也一并发送出去,对于QPushButton按钮来说没用,对于QRadioButton来说有用;
pressed(): 按下,即鼠标左键按下,就会触发该信号;
released(): 松开,即鼠标左键松开,就会触发该信号;
toggled(): 按钮状态切换了,就会发送该信号

接着,我们来分别演示一下这几个信号的用法和区别:
在这里插入图片描述

  1. clicked(bool)
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  1. pressed、released
    对于槽函数:
    在这里插入图片描述
    运行结果如下:
    在这里插入图片描述
  1. toggled(bool)
    当某个按钮状态发生变化过后,那么会触发toggled信号并且该信号会携带上当前按钮的选中状态;
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

eg2 .单选框分组

  1. 设计对应的图形界面:
    在这里插入图片描述
  2. 运行:
    在这里插入图片描述
    我们发现,我们只能选择一个,我们选了汉堡,小食和饮料组的商品我们无法选择,对于其它也是同理;
    这主要是因为,RadioButton按钮的排他性影响的,这里我们主要有两种解决方案:
    ①关闭RadioButton的排他性:
    在这里插入图片描述
    这样确实能解决问题,但是也会引发一个新问题,就是,虽然我接触了排他性了,但是对于同一组中的商品我也能同时选中了,比如:
    在这里插入图片描述
    这是不合理的,我们希望的是,同一组排他,而不同组之间不存在排他性!
    ②采用QButtonGroup分组排他;
    我们使用QButtonGroup将同一组的商品放在一起,然后进行组内排他:
    在这里插入图片描述
    同时也不存在,组内也可以同时选择的情况;

QCheckBox

与QRadioButton单选按钮相对,只能选中一个;QCheckBox表示复选按钮,可以选中多个;

eg:

  1. 设计界面
    在这里插入图片描述
  1. 设置对应的槽函数:
    在这里插入图片描述
  2. 运行结果:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java毕业设计 基于SpringBoot vue新能源充电系统

Java毕业设计 基于SpringBoot vue新能源充电系统 SpringBoot 新能源充电系统 功能介绍 首页 图片轮播 充电桩 充电桩类型 充电桩详情 充电桩预约 新能源公告 公告详情 登录注册 个人中心 余额充值 修改密码 充电桩报修 充电桩预约订单 客服 后台管理 登录 个人中心 修改密码…

eclipse插件开发(一)

eclipse插件开发在java技能树中,是一个比较古老的分支。网上资料也少。最近开发中需要用到此技能,故记录下点亮过程。笔者水平有限,记录供通道者浅读。 学习eclipse插件开发,首先需明确几个高频的概念,先说说何为插件及…

网工交换基础——VLAN Maping

一、定义 VLAN Maping通过修改报文携带的VLAN Tag来实现不同VLAN的相互映射。 二、应用场景 1、场景一:两个VLAN相同的二层用户网络通过骨干网络互联,为了实现用户之间的二层互通,以及二层协议(例如MSTP等)的统一部署…

pandas--数据的添加和修改

pandas--数据的添加和修改 1、替换数据2、填充空值3、修改索引名4、增加列5、插入列df.insert()6、增加行7、追加合并8、删除空值9、删除 1、替换数据 使用replace方法可以实现数据的批量替换。 df.replace(1, 10) # 将数据中的所有1替换为10 df.replace([1, 2, 3, 4], 8)…

layui select 绑定onchange事件失效

layui select 绑定onchange事件失效 问题背景解决方案 问题背景 在日常工作中,可能会用到页面 freemaker 以及 layui 前端框架,这个时候直接在 select 上面绑定 onchange 事件往往是不生效的,错误的方式 这种方式给 select 绑定的 onchange…

智慧景区新篇章:山海鲸可视化管理解析

随着旅游业的蓬勃发展,景区管理面临着越来越多的挑战。如何提升游客体验、优化资源配置、确保游客安全,成为景区管理者亟需解决的问题。山海鲸智慧景区管理可视化系统,以其先进的技术和创新的理念,为景区管理带来了全新的解决方案…

图像ISP——AGC参数解析

前言 AWB和AGC是两种常见的自动调整功能。AWB用于自动调整图像的白平衡,以确保颜色在不同光照条件下仍然看起来自然。而AGC则用于自动调整图像的增益,以在不同的亮度条件下保持适当的曝光。 代码例程 static AWB_AGC_TABLE_S g_stAwbAgcTable {/* bvali…

鸿蒙应用开发者高级认证指南及参考资料整理(含详细参考答案)

如何报名鸿蒙应用开发者高级认证 报名链接:点击这里进行报名。报名步骤: 点击上述链接进入报名页面。选择“立即报名”。在课程内容中找到“HarmonyOS应用开发者高级认证”,点击进入。点击“参加考试”,随后即可开始考试。考试注意事项 实名认证:考试前,请务必完成实名认…

厉害了,OPCUA协议助力航天工业探索苍穹!

今年以来,航天科技真是捷报频频,神州十八号载人飞船和嫦娥六号均发射成功!还让宇航员成功地进入了天宫空间站,可喜可贺。说到航天过程,其中有一个环节尤为重要,就是布置众多望远镜。有人可能会问&#xff0…

赣红孵联合卫东街道未保站开展未成年人保护法散落在每个角落活动

为进一步提高家长的法治意识,依法保障未成年人的合法权益,全力构建安全和谐文明家庭,5月8日,赣红孵社会组织培育中心联合卫东街道未成年人保护站在在南师附小红谷滩校区实验小学开展“未成年人保护法散落在每个角落”未成年人普法…

Liunx日志轮转

目录 一.日志的重要性 二、日志系统rsyslog 常见的日志文件(系统、进程、应用程序) 日志优先级 三、logrotate日志轮转 什么是日志轮转? logrotate 的工作方式 logrotate 配置文件 logrotate命令 一.日志的重要性 Linux日志文件对于理解和解决系统中出现的…

vue基础配置

vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from "path"; //引入svg需要用到的插件 import { createSvgIconsPlugin } from vite-plugin-svg-icons //mock插件提供方法 import { viteMockServe } from vite-…

MySQL慢查询SQL优化

一、慢查询日志 描述:通过慢查询日志等定位那些执行效率较低的SQL语句 查看 # 慢查询是否开启 show variables like slow_query_log%; # 慢查询超时时间 show variables like long_query_time%;执行SQL 开启慢查询日志 set global slow_query_log ON;设置慢查…

笔试强训week4

day1 Q1 难度⭐⭐ 小易的升级之路_牛客题霸_牛客网 (nowcoder.com) 题目: 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防…

头文件相互包含 前向声明

目录 ClassA.h ClassA.cpp ClassB.h ClassB.cpp error: C2143: 语法错误: 缺少“;”(在“*”的前面) 当两个类需要相互访问对方的成员或方法时,通常意味着它们之间存在某种依赖关系。这种依赖关系可能源于类的设计或功能需求。以下是一个简单的例子&…

ffmpeg常用的命令(windows)

ffmpeg -i visit.mp4 查看信息 ffmpeg -i visit.mp4 -hide_banner 去掉无关的信息,只保留目标文件的信息 ffmpeg -i visit.mp4 visit.avi 转换文件信息 ffmpeg -i visit.mp4 -qscale 0 visit.avi 保留原始的视频质量输出 ffmpeg -i visit.mp4 …

latex编译参考文献是问号解决办法

一、背景 使用Latex写文章时,编译tex文件后,正文中参考文献会变为?号,具体解决办法如下。 二、latex编译参考文献是问号解决办法 找到tex源文件所在的文件夹,删除所有除tex文件同名的文件,重新编译即可&…

cookie,session,token

目的:解决用户登录状态 从一个简单的登录开始说起, 在我们访问bilibili的时候,第一次需要登录,但后续就不需要登录了,可以直接访问bilibili。 而且每次在页面请求服务器的资源都需要维持登录状态,如果没…

电商核心技术揭秘51:多渠道营销整合策略

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘相关系列文章合集(3) 电商技术揭秘四十一:电商平台的营销系统浅析 电商技术揭秘四十二&#…

支付宝——图技术在金融反欺诈中的应用

目录 图在金融反欺诈中的应用背景 图驱动的感知研判决策处置 图在金融反欺诈中的演进 总结和展望