【QT入门】Qt自定义控件与样式设计之QPushButton常用qss

news2024/10/6 22:29:14

往期回顾

【QT入门】Qt自定义控件与样式设计之qss介绍(Qt style sheet)-CSDN博客

【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客

【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客

 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss

这里我们主要是实现几个常用的按钮样式,针对其中涉及的知识点进行分析讲解:

 

一、设置字体、背景以及鼠标按下,悬浮点击出现不同样式 

1、鼠标按下效果

在设置鼠标悬浮时的效果是,用了一个id选择器,这样就只对选中的那个按钮有效果

/*鼠标悬浮时的效果*/
QPushButton#btn2:hover
{
    color:#0000ff;
    background-color:rgb(100, 100, 20); /*改变背景色*/
    border-style:inset;/*改变边框风格*/
    padding-left:8px;
    padding-top:8px;
}

2、相关的状态扩充 

1、checked      button部件被选中
2、unchecked   button部件未被选中
3、disabled    部件被禁用
4、enabled      部件被启用
5、focus        部件获得焦点
6、hover       鼠标位于部件上
7、pressed      部件被鼠标按下
8、indeterminate    checkbox或radiobutton被部分选中
9、off              部件可以切换,且处于off状态
10、on              部件可以切换,且处于on状态

3、禁止使用的样式 

QPushButton:disabled
{
 color: blue;
 border-color: brown;
    background-color: #363636;
}

ui->pushButton->setEnabled(false); 

4、完整代码

QPushButton
{  
    /* 前景色, 文字的颜色 */  
    color:green;  
 
    /* 背景色 */  
    background-color:rgb(223,223,223);  
 
    /* 边框风格 */  
    border-style:outset;  
 
    /* 边框宽度 */  
    border-width:0.5px;  
 
    /* 边框颜色 */  
    border-color:rgb(10,45,110);  
 
    /* 边框倒角 */  
    border-radius:10px;  
 
    /* 字体 */  
    font:bold 22px;  
 
    /* 控件最小宽度 */  
    min-width:100px;  
 
    /* 控件最小高度 */  
    min-height:20px;  
 
    /* 内边距 */  
    padding:4px;  
} 
 
/* 鼠标按下时的效果 */ 
QPushButton#pushButton:pressed 
{  
    /* 改变背景色 */  
    background-color:rgb(40,85,20);  
 
    /* 改变边框风格 */  
    border-style:inset;  
 
    /* 使文字有一点移动 */  
    padding-left:6px;  
    padding-top:6px;  
}
 
/* 按钮样式 */ 
QPushButton:flat 
{  
    border:2px solid red;  
} 
 
/*鼠标悬浮时的效果*/
QPushButton:hover
{
    color:#0000ff;
    background-color:rgb(210, 205, 205); /*改变背景色*/
    border-style:inset;/*改变边框风格*/
    padding-left:8px;
    padding-top:8px;
}

二、放置一个图片,鼠标悬浮和点击时都会出现不同样式 

这个比较简单,就直接上代码了

QPushButton
{
 background-image:url(":/resources/user.png");
 background-position:center;
 background-repeat: no-repeat;
 border:none
}
 
QPushButton:hover
{
 background-color:rgb(10,210,210);
 background-image:url(":/resources/user_hover.png")
}
 
QPushButton:pressed
{
 background-color:rgb(10,210,210);
 background-image:url(":/resources/user.png");
 padding-left:8px;
    padding-top:8px;
}

三、实现按钮上图片和文字左右共存的效果

主要是实现按钮上图片和文字左右共存的效果,可以通过参数设置图片在左边还是在右边

3.1最终效果

实现这个还是简单,而且既可以通过代码实现,也可以通过样式表实现

3.2通过代码实现 

    ui->pushButton_3->resize(64,64);
    ui->pushButton_3->setText("会员");
    ui->pushButton_3->setIcon(QIcon(":/resources/vip_yes.png"));
    //可以设置图标的位置,在文字左边还是右边
    ui->pushButton_3->setLayoutDirection(Qt::LeftToRight);

    enum LayoutDirection {
        LeftToRight,
        RightToLeft,
        LayoutDirectionAuto
    }; 

这里的这个参数指的是图片的位置,默认情况下是图片在左边。

3.3通过样式表实现

 里面用到一个转义字符,注意一下。

ui->pushButton_4->setFixedSize(200, 64);
    ui->pushButton_4->setText(u8"非会员");
    QString btnStyle = "QPushButton{"
                       "background-image: url(:/resources/vip_no.png);"
                       "background-repeat: no-repeat;"
                       "background-origin: padding;"
                       "background-position: left;"
                       "padding-left:65px;"
                       "border: none;"
                       "background-color: rgb(0, 255, 255);"
                       "color:rgb(0, 0, 0);"
                       "text-align:left;"
                       "font: bold italic 30px \"Microsoft YaHei\";"
                       "}";

    ui->pushButton_4->setStyleSheet(btnStyle);

3.4实现图片和文字的上下共存

如果说想实现图片和文字的上下共存,也是两个方法。

3.4.1ToolButton

用ToolButton,这个可以直接实现

3.4.2QPushButton

QPushButton本身也是继承自QWidget,我们就可以把他看成是一个Widget,所以可以在按钮里放两个QLabel,一个在上面放图片,一个在下面放文字。最终实现我们想要的效果

ui->label->setPixmap(QPixmap(":/resources/vip_yes.png"));

 


以上,就是QPushButton常用的qss。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

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

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

相关文章

本地电脑渲染不行怎么解决?自助式渲染助你渲染无忧

有时候,即使购买了昂贵的新电脑,我们也可能会遇到渲染速度缓慢、画质不佳或渲染失败等问题。这些问题可能由多种因素引起。针对该问题,为大家推荐了自助式的渲染,解决你本地电脑渲染不佳问题。 电脑渲染不行原因 新电脑渲染效果不…

亚马逊AWS上怎么创建Linux 服务器?操作难不难?

AWS(Amazon Web Services)是全球领先的云服务器提供商之一。你可以使用 AWS 平台在一分钟内设置完服务器。在 AWS 上,你可以微调服务器的许多技术细节,如 CPU 数量,内存和磁盘空间,磁盘类型(更快的 SSD 或者经典的 IDE)等。关于 A…

【linux】set ff=unix、linux设置文件格式

文章目录 一、文件格式二、如何查看文件格式三、设置文件格式、set ffunix四、查看unix与dos的区别 一、文件格式 当我们打开sh脚本时发现有时候格式是unix(LF) ,有时候是windows(CR LF) 。如下图: 文件格式影响了文件中的换行符 linux中sh类型的文件一般要设置为…

测试必备:网站崩溃原因大揭秘!12种常见问题一网打尽

网站崩溃是研发团队最怕看到的情况,但是由于种种原因却时常出现,作为测试人员,我们更应该比一般人了解网站崩溃的原因及排查方法,这是我们测试工作的重要一环。接下来我就谈谈12种常见的网站崩溃原因以及如何跟踪和解决它们。 你的…

纯小白蓝桥杯备赛笔记--DAY10(字符串)

文章目录 KMP字符串哈希算法简介:斤斤计较的小z--2047字符串hash Manacher回文串的性质算法简介最长回文子串 字典树基础朴素字符串查找步骤前缀判定--1204 01tire算法简介:例题1:例题2: KMP字符串哈希 算法简介: 真前…

js将对象数组中的某个属性值,批量替换成另一个数值

前提:对接口数据进行替换。把对应的数值或者字符串替换成中文。。。 核心代码: const toStr {sh: "沪",sz: "深", };myArr.map((item) > {const placeCode item.placeCode;item.placeCode toStr[placeCode] ? toStr[placeC…

Xshell连接不上Ubuntu

1 ubuntu安装ssh服务器 sudo apt install openssh-server修改配置文件vi /etc/ssh/sshd_config 修改如下两个配置 修改完运行下面代码。再用 xhell连接试试。 /etc/init.d/ssh restart

普通相机标定——执行与结果验证

在之前的准备工作中,我们完成了 棋盘格标靶的制作采集相机图像功能函数的实现相机内参标定功能函数实现工具类函数的实现 终于到了将他们组合起来实现相机内参标定的时刻了!这里作者用的是笔记本电脑的前置相机,首先调用SaveCameraImage()保存相机图像,同时手举棋盘…

搜维尔科技:一个人如何使用Faceware为歌手制作完整的MV

一个人如何使用Faceware为歌手制作完整的MV 最近,我们有机会采访了 Bryce,他是一位独立创作者,他通过使用 Faceware 来制作视频。完整采访如下: 这个项目是如何产生的?该项目的推动力是什么? “我爱你”M…

字节出来的,太厉害了。。。。

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 前段时间公司缺人,也面了许多测试,一开始…

【UE 网络】DS框架学习路线

目录 0 引言1 如何学习DS框架1. 熟悉Unreal Engine基础2. 学习网络编程基础3. 掌握UE网络概念4. 实践和实验5. 加入社区和论坛6. 官方示例和案例研究7. 专业书籍和在线课程 2 DS框架重要知识点有哪些1. 网络复制2. 远程过程调用(RPC)3. 客户端服务器架构…

RabbitMQ基本使用及企业开发中注意事项

目录 一、基本使用 二、使用注意事项 1. 生产者重连机制 - 保证mq服务是通的 2. 生产者确认机制 - 回调机制 3. MQ的可靠性 4. Lazy Queue模式 5. 消费者确认机制 一、基本使用 部署完RabbitMQ有两种使用方式: 网页客户端Java代码 MQ组成部分:…

【php开发支付宝web支付】

首先介绍下 我用的框架ci 在吐槽下百度的其他人的写的都很垃圾,还不如自己看支付宝的开发手册了 1、composer安装支付宝的sdk composer require alipay/alipay-sdk-php安装完毕 不多哔哔 代码展示 先点地址登录支付宝以后再上我这重点下 支付宝沙箱地址 $ord…

easyexcel处理复杂表头

需求&#xff0c;模板如下 功能如下 开始整活&#xff0c;依赖包。 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency>下载导入模板 1.方法 GetMapping…

Python web自动化测试 —— 文件上传!

​文件上传三种方式&#xff1a; &#xff08;一&#xff09;查看元素标签&#xff0c;如果是input&#xff0c;则可以参照文本框输入的形式进行文件上传 方法&#xff1a;和用户输入是一样的&#xff0c;使用send_keys 步骤&#xff1a;1、找到定位元素&#xff0c;2&#…

vue vue3 手写 动态加载组件

效果展示 一、需求背景&#xff1a; # vue3 项目涉及很多图表加载、表格加载 #考虑手写一个动态加载组件 二、实现思路 通过一个加载状态变量&#xff0c;通过v-if判断&#xff0c;加载状态的变量等于哪一个&#xff0c;动态加载组件内部就显示的哪一块组件。 三、实现效果…

Python 全栈体系【四阶】(二十二)

第五章 深度学习 二、推荐系统 3. 关联规则 3.1 Apriori “啤酒与尿布”的故事产生于 20 世纪 90 年代的美国沃尔玛超市。沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象&#xff1a;在某些特定的情况下&#xff0c;“啤酒”与“尿布”两件看上去毫无关系…

javaWeb新闻发布及管理系统

摘 要 随着电脑、智能手机等能够连接网络设备的家庭化和大众化&#xff0c;各种网站开始被设计和开发出来&#xff0c;功能多种多样&#xff0c;涉及的领域也各有不同&#xff0c;生活、商业、科技等等。而信息的发布是网络的一大特点&#xff0c;人们上网的主要需求就是汲取自…

2024年中国金融科技(FinTech)行业发展洞察报告

核心摘要&#xff1a; 金融监管体系的改革推动金融科技行业进入超级监管时代&#xff0c;数据要素应用与金融场景建设成为如今行业关注的重要领域&#xff0c;为金融机构提供以业务需求为导向的技术服务成为“厚积成势”阶段行业发展的新目标&#xff0c;市场参与者的“业技融…

抖音电商罗盘品牌人群运营策略指南

【干货资料持续更新&#xff0c;以防走丢】 抖音电商罗盘品牌人群运营策略指南 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 抖音运营资料合集&#xff08;完整资料包含以下内容&#xff09; 目录 品牌人群运营策略&#xff0c;旨在帮助品牌通过精细化运营提…