Qt|QPushButton控件讲解

前提

按钮分为了四种状态:常态、聚焦、按下、禁用

前一段时间更新了MFC框架下CButton的自绘。因为MFC框架下的按钮限制性很高,所以只能由自绘实现各种风格,但是QT框架完美的解决了这个问题,我们只需要了解如何调用,就可以展示炫酷的画面了,接下来我们来讲解下如何使用吧!

有需要的或者是对控件风格不熟悉的赶紧收藏

Background-color:#FF0000;

起来!以备不时之需~

功能

1:背景颜色值改变

我们可以对四种状态设置一个背景颜色值,也可以根据不同状态设置不同的颜色值。

主要是根据我们实际的开发需求来定的。

情况1:四种状态使用一种背景颜色值

QSS方式:

Background-color:#FF0000;

情况2:每个状态的颜色值不一样

QSS方式:

“QPushButton{background-color:#FF0000};” //常态
“QPushButton:hover{background-color:#00FF00};” //聚焦状态
“QPushButton:pressed{background-color:#0000FF};” //按下状态
“QPushButton:disabled{background-color:#DDDDDD};” //禁用状态

2:背景图片改变

与上述颜色值更改的方式一致,只是将颜色值变成了图片。

情况1:四态使用一种背景图片

QSS方式:

border-image:url(:/QtControl/img/normal.png);

情况2:每个状态的背景图不一致

QSS方式:

"QPushButton{border-image:url(:/QtControl/img/normal.png); }"
"QPushButton:hover{border-image:url(:/QtControl/img/hover.png);}"
"QPushButton:pressed{border-image:url(:/QtControl/img/pre.png);}"
"QPushButton:disabled{border-image:url(:/QtControl/img/disab.png);}";

3:文本对齐方式

QPushButton这个控件的对齐方式有点不一样哦~是不可以使用"setAlignment"这个函数进行设置的,只能通"过setStyleSheet"进行QSS风格设置,这一点大家需要记住啦!

按钮中字体的对齐方式:left、right、top、bottom、center

QSS设置

左对齐:text-align:left;

右对齐:text-align:right;

居中:text-align:center;

内边距对齐:

        情况1:文本左对齐时,内边距设置。padding-left:10px;

        情况2:文本右对齐时,内边距设置。padding-right:10px;

4:内部显示图片

图片在右侧显示

显示效果,以文本右侧显示图片为例子,如下所示:

QSS方式:

QString strStyle = "QPushButton{font-family:Microsoft YaHei; font-size:12px; color:#666666;} "
"QPushButton{background-image:url(:/QtControl/image/2wm_p.png);"
"background-repeat:repeat-no-repeat;" //图片重复方式"background-position:right;""background-origin:content;""padding-right:15px;}";

说明:

1:在图片时,为什么使用background-image与2.2中的方式为何不一致?

因为border-image设置背景时,图片是拉伸填充的,在此处不需要。

2:background-repeat说明

该属性定义了图像的平铺模式。背景图像的位置是根据background-position属性设置的。如果未规定background-position属性,图像会被放置在元素的左上角。

3:background-position说明

位置关键字可以按任何顺序出现,只要保证不超过两个关键词。

如果只出现一个关键字,则认为另一个关键字是center。

4:background-origin 说明

相对于内容框来定位背景图像。

属性值:border(边框)、padding(填充)、context(内容)

图片在顶部,QSS设置方式:

QString strStyle = "QPushButton{font-family:Microsoft YaHei; font-size:12px; color:#666666;text-align:bottom;} "
"QPushButton{background-image:url(:/QtControl/image/2wm_p.png);"
"background-repeat:no-repeat;" "background-position:top;""background-origin:content;""padding:10px}";

图片左侧,QSS设置方式:

当图片在左侧时,相当于按钮的图标,则使用下面这种方式实现。

ui.btn->setIcon(QIcon(“:/QtControl/image/2wm_p.png”));
5:文本底部添加下划线

对于这个功能,很多情况下都会用到,前一阵子我也使用到了这个功能,索性分享给大家吧~

首先先看一下展示效果

下划线的长度是整个QPushButton的长度。

QSS的选中效果

sStyle = "QPushButton{ font-size:14px; font-family:Microsoft YaHei UI;color:#1576fc;background: transparent;border-width:2px;border-style:none none solid none;border-color:#1576fc;}";

QSS的未选中效果

sStyle = "QPushButton{ font-size:14px; font-family:Microsoft YaHei UI;color:#999999;background: transparent;border-width:2px;border-style:none none solid none;border-color:#cccccc;}";

总结

目前想到的功能也就这些啦~

如果还有想要实现却没法实现的功能,评论下说明我会更新的哦~

我是糯诺诺米团,一名C++开发程序媛~

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

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

相关文章

封装通用mixins,在vue中实现a-table组件的可伸缩列(详细且使用便捷)

1、实现效果 2、使用场景 vue2 antd-vue 1.x版本由于antd-vue 1.x版本的组件库没有提供可伸缩列的功能,才需要我们手动开发在antd-vue 3.x版本以上的表格已经支持这个功能,不需要我们再去手动开发 3、话不多说,上代码 首先安装vue-dragga…

语义分割:从早期探索到深度学习的突破

语义分割:从早期探索到深度学习的突破 语义分割的端倪:从早期探索到深度学习的突破引言早期技术:图像处理与模式识别边缘检测区域生长图割(Graph Cut)聚类方法 深度学习的兴起:CNN革命2012年 AlexNet的突破全卷积网络(…

6、基于机器学习的预测

应用机器学习的任何预测任务与这四个策略。 文章目录 1、简介1.1定义预测任务1.2准备预测数据1.3多步预测策略1.3.1多输出模型1.3.2直接策略1.3.3递归策略1.3.4DirRec 策略2、流感趋势示例2.1多输出模型2.2直接策略1、简介 在第二课和第三课中,我们将预测视为一个简单的回归问…

vue核心知识点

一、Vue基础知识点总结 开发vue项目的模式有两种: 基于vue.js,在html中引入vue.js,让vue.js管理div#app元素。基于脚手架环境:通过vue脚手架环境可以方便的创建一个通用的vue项目框架的模板,在此基础之上开发vue项目…

基于SpringBoot Vue学生信息管理

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

Redis -- 单线程模型

失败是成功之母 ——法国作家巴尔扎克 目录 单线程模型 Redis为什么这么快 单线程模型 redis只使用一个线程,处理所有的命令请求,不是说redis服务器进场内部真的就只有一个线程,其实也有多个线程,那就是处理网络和io的线程。 R…

图像去噪——SpatiallyAdaptiveSSID网络推理测试(详细图文教程)

SpatiallyAdaptiveSSID 是一种有效的图像去噪方法,它通过自适应地处理不同区域的噪声,能够在保持图像细节的同时,有效地去除噪声。 目录 一、SpatiallyAdaptiveSSID网络简介二、源码包准备2.1 测试集2.2 模型权重文件 三、测试环境四、推理测…

C#,斯特林数(Stirling Number)的算法与源代码

1 斯特林数 在组合数学,斯特林数可指两类数,第一类斯特林数和第二类斯特林数,都是由18世纪数学家James Stirling提出的。它们自18世纪以来一直吸引许多数学家的兴趣,如欧拉、柯西、西尔沃斯特和凯莱等。后来哥本哈根(…

氢气泄漏检测仪使用方法:守护安全,从细节开始

随着科技的发展,我们的生活和工作环境中充满了各种潜在的危险。其中,氢气作为一种清洁能源,其使用日益广泛,但同时也带来了泄漏的风险。为了确保我们的安全,了解并正确使用氢气泄漏检测仪至关重要。下面将详细介绍氢气…

用户界面(UI)、用户体验(UE)和用户体验(UX)的差异

对一个应用程序而言,UX/UE (user experience) 设计和 UI (user interface) 设计非常重要。UX设计包括可视化布局、信息结构、可用性、图形、互动等多个方面。UI设计也属于UX范畴。正是因为三者在一定程度上具有重叠的工作内容,很多从业多年的设计师都分不…

[香橙派开发系列]使用蓝牙和手机进行信息的交换

文章目录 前言一、HC05蓝牙模块1.HC05概述2.HC05的连接图3.进入HC05的命令模式4.常用的AT指令4.1 检查AT是否上线4.2 重启模块4.3 获取软件版本号4.4 恢复默认状态4.5 获取蓝牙的名称4.6 设置蓝牙模块的波特率4.7 查询蓝牙的连接模式4.8 查询模块角色 5.连接电脑6.通过HC05发送…

【大厂AI课学习笔记】1.4 算法的进步(1)

2006年以来,以深度学习为代表的机器学习算法的发展,启发了人工智能的发展。 MORE: 自2006年以来,深度学习成为了机器学习领域的一个重要分支,引领了人工智能的飞速发展。作为人工智能专家,我将阐述这一时期…

算法——A/算法通识

目录 一、复杂度分析 A/时间复杂度 B/空间复杂度 C/分析技巧 二、枚举分析 A/枚举算法介绍 B/解空间的类型 C/循环枚举解空间 三、模拟算法 四、递归 A/递归介绍 递归的两个关键要素: B/递归如何实现 C/递归和循环的比较 一、复杂度分析 A/时间复杂度…

腾讯mini项目总结-指标监控服务重构

项目概述 本项目的背景是,当前企业内部使用的指标监控服务的方案的成本很高,无法符合用户的需求,于是需要调研并对比测试市面上比较热门的几款开源的监控方案(选择了通用的OpenTelemetry协议:Signoz,otel-…

grafana安装DevOpsProdigy KubeGraf 1.5.2

安装DevOpsProdigy KubeGraf需要安装kube-state-metrics 官方地址:https://github.com/kubernetes/kube-state-metrics/tree/release-2.10/examples/standard 查看k8s版本和kube-state-metrics对应版本: [rootmaster1 kube-state-metrics]# ll 总用量 …

Elasticsearch:Geoshape query

Geoshape 查询可以用于过滤使用 geo_shape 或 geo_point 类型索引的文档。 geo_shape 查询使用与 geo_shape 或 geo_point 映射相同的索引来查找具有与查询形状相关的形状的文档,并使用指定的空间关系:相交(intersect)、包含(con…

Linux 命令 —— top

Linux 命令 —— top 相对于 ps 是选取一个时间点的进程状态,top 则可以持续检测进程运行的状态。使用方式如下: 用法: top [-d secs] | [-p pid] 选项与参数: -d secs:整个进程界面更新 secs 秒。默认是 5 5 5 秒。…

Tomcat 部署项目时 war 和 war exploded区别

在 Tomcat 调试部署的时候,我们通常会看到有下面 2 个选项。 是选择war还是war exploded 这里首先看一下他们两个的区别: war 模式:将WEB工程以包的形式上传到服务器 ;war exploded 模式:将WEB工程以当前文件夹的位置…

安泰前置微小信号放大器工作原理是什么

前置微小信号放大器是电子电路中的一种重要组件,主要用于放大输入信号中的微小电压。这种放大器的工作原理涉及到电子器件的特性和基本电路理论。以下是前置微小信号放大器的工作原理的详细解释: 前置微小信号放大器通常用于增强输入信号,以便…

YOLOv8-Segment C++

YOLOv8-Segment C https://github.com/triple-Mu/YOLOv8-TensorRT 这张图像是运行yolov8-seg程序得到的结果图,首先是检测到了person、bus及skateboard(这个是检测错误,将鞋及其影子检测成了滑板,偶尔存在错误也属正常),然后用方…