PySide6的样式表

news2025/1/8 18:15:53

        PySide6 提供了对 Qt 样式表(Qt Style Sheets,简称 QSS)的支持,这是一种类似于 CSS 的样式表语言,用于自定义 Qt 应用程序的外观。

1. 什么是 Qt 样式表(QSS)

        Qt 样式表是一种声明性的样式表语言,类似于 CSS(层叠样式表)。它允许开发者通过编写样式规则来定义控件的外观,如颜色、字体、边框等。通过使用 QSS,开发者可以轻松地实现应用程序的视觉风格统一,而不需要修改底层的 C++ 代码。


2. 如何在 PySide6 中使用样式表

        在 PySide6 中,可以使用 setStyleSheet() 方法为单个控件或整个应用程序设置样式表。样式表可以应用于单个控件,也可以通过设置父控件的样式表来影响其所有的子控件。

示例 1:为单个控件设置样式表
from PySide6.QtWidgets import QApplication, QPushButton

app = QApplication([])

button = QPushButton("Click")
button.setStyleSheet("""
    QPushButton {
        background-color: #4CAF50;
        color: white;
        border-radius: 5px;
        padding: 10px;
    }
    QPushButton:hover {
        background-color: #45a049;
    }
    QPushButton:pressed {
        background-color: #3e8e41;
    }
""")

button.show()
app.exec()

        在这个示例中,我们为 QPushButton 设置了背景颜色、文本颜色、圆角和内边距。此外,我们还定义了按钮在鼠标悬停和按下时的不同样式。

示例 2:为整个应用程序设置样式表
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

app = QApplication([])

window = QMainWindow()
window.setStyleSheet("""
    QMainWindow {
        background-color: #f0f0f0;
    }
    QPushButton {
        background-color: #2196F3;
        color: white;
        border-radius: 5px;
        padding: 10px;
    }
""")

button = QPushButton("Click Me")
window.setCentralWidget(button)

window.show()
app.exec()

        在这个示例中,我们为 QMainWindow 和 QPushButton 设置了样式表。QMainWindow 的背景颜色被设置为浅灰色,而按钮的样式与前一个示例类似。


3. 样式表的基本语法

Qt 样式表的语法与 CSS 非常相似,以下是一些常见的样式表规则:

  • 选择器:用于指定要应用样式的控件。例如,QPushButton 表示所有 QPushButton 控件。
  • 属性:用于定义控件的外观属性。例如,background-color 定义控件的背景颜色。
  • :属性的具体值。例如,#4CAF50 是背景颜色的值。
常见的样式属性
  • background-color: 设置背景颜色。
  • color: 设置文本颜色。
  • border: 设置边框样式。
  • border-radius: 设置边框的圆角。
  • padding: 设置内边距。
  • margin: 设置外边距。
  • font-family: 设置字体。
  • font-size: 设置字体大小。
  • font-weight: 设置字体粗细。
伪状态

        Qt 样式表支持伪状态(Pseudo-states),类似于 CSS 中的伪类(如 :hover:active 等)。以下是一些常见的伪状态:

  • :hover: 鼠标悬停时的状态。
  • :pressed: 控件被按下时的状态。
  • :checked: 控件被选中时的状态(如复选框或单选按钮)。
  • :disabled: 控件禁用时的状态。
QPushButton:hover {
    background-color: #45a049;
}

QPushButton:pressed {
    background-color: #3e8e41;
}

4. 继承与覆盖

        在 Qt 样式表中,样式规则是继承的。子控件会继承父控件的样式规则,但子控件的样式规则可以覆盖父控件的样式规则。

QWidget {
    background-color: #f0f0f0;
}

QPushButton {
    background-color: #4CAF50;
}

QPushButton#myButton {
    background-color: #2196F3;
}

        在这个示例中,所有的 QWidget 控件的背景颜色为浅灰色。QPushButton 的背景颜色为绿色,但 QPushButton 控件如果具有 objectName 为 myButton,则其背景颜色为蓝色。

5. 使用资源文件

        Qt 样式表还可以引用资源文件中的图像、图标等资源。通过使用 QFile 或 QResource,可以将资源文件加载到应用程序中,并在样式表中使用。

QPushButton {
    background-image: url(:/icons/button_background.png);
}

在这个示例中,background-image 属性引用了一个资源文件中的图像。

6. 调试样式表

        在开发过程中,可能需要调试样式表以确保其正确应用。Qt Designer 是一个非常有用的工具,可以在设计界面的同时预览样式表的效果。此外,PySide6 还提供 QStyleSheetWatcher 类,用于在运行时动态更新样式表。

        通过使用 Qt 样式表,PySide6 开发者可以轻松地自定义应用程序的外观,而无需深入底层的 C++ 代码。样式表的语法类似于 CSS,支持选择器、属性、伪状态等功能,使得界面设计更加灵活和直观。无论是简单的按钮样式,还是复杂的界面主题,Qt 样式表都能满足开发者的需求。

        样式表的一些进一步的学习记录在此可以参考:https://blog.csdn.net/xulibo5828/category_12673318.html

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

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

相关文章

flutter 专题三十三 Flutter 重构去哪儿QTalk

QTalk 是去哪儿网内部的一个 IM 沟通工具,同时集成了很多内部的系统,比如 OA 审批,门禁打卡,请假审批,预定会议室,驼圈(驼厂朋友圈)等功能;方便内部办公沟通、交流的同时…

任务调度之Quartz(二):Quartz体系结构

1、Quartz 体系结构 由上一篇的Quartz基本使用可以发现,Quartz 主要包含一下几种角色: 1)Job:也可以认为是JobDtetail,表示具体的调度任务 2)Trigger:触发器,用于定义任务Job出发执行…

141.环形链表 142.环形链表II

141.环形链表 & 142.环形链表II 141.环形链表 思路:快慢指针 or 哈希表 快慢指针代码: class Solution { public:bool hasCycle(ListNode *head) {if(headnullptr||head->nextnullptr)return false;ListNode *fasthead->next; //不能设置成…

软件项目体系建设文档,项目开发实施运维,审计,安全体系建设,验收交付,售前资料(word原件)

软件系统实施标准化流程设计至关重要,因为它能确保开发、测试、部署及维护等各阶段高效有序进行。标准化流程能减少人为错误,提升代码质量和系统稳定性。同时,它促进了团队成员间的沟通与协作,确保项目按时交付。此外,…

uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端

采用 uniapp-vue3 实现, 是一款带有丝滑动画效果的单选框组件,提供点状、条状的动画过渡效果,支持多项自定义配置,适配 web、H5、微信小程序(其他平台小程序未测试过,可自行尝试) 可到插件市场下载尝试&…

python vue3实现大文件分段续传(断点续传)--带暂停和继续功能

后端内容无变化具体设置可参考上一篇点击进入上一篇,需要注意的是big_file_upload_backend/settings.py下的 是statics 多个s其实无所谓,但是要一致 STATIC_URL "statics/" STATICFILES_DIRS [os.path.join(BASE_DIR, "../statics&quo…

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯(十一) 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…

初学Linux电源管理

学习文档出处: 万字整理 | 深入理解Linux电源管理:万字整理 | 深入理解Linux电源管理-CSDN博客 电源管理 因为设备需要用电,而且设备中的各个硬件所需要的电压是不一样的。故计算机需要对硬件的电源状态管理。但是电能并不是免费的&#x…

若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)

若依中Feign调用具体使用 注意:以下所有步骤实现的前提是需要在启动类上加入注解 EnableRyFeignClients 主要是为开启feign接口扫描 1.创建服务提供者(provider) 导入依赖(我在分析依赖时发现若依本身已经引入openfeign依赖,并在此基础上自定义了自己的EnableRyF…

CS·GO搬砖流程详细版

说简单点,就是Steam买了然后BUFF上卖,或许大家都知道这点,但就是一些操作和细节问题没那么明白。我相信,你看完这篇文章以后,至少会有新的认知。 好吧,废话少说,直接上实操! 首先准…

每日一题:链表中环的入口结点

文章目录 判断链表环的入口节点描述数据范围:复杂度要求:输入输出 示例代码实现思路解析注意事项: 判断链表环的入口节点 描述 给定一个链表,判断该链表是否存在环。如果存在环,返回环的入口节点;如果不存…

以C++为基础快速了解C#

using System: - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句, 相当于C的 using namespace std; C# 是大小写敏感的。 所有的语句和表达式必须以分号(;)结尾。 程序的执行从 Main 方法开始。 与 Java 不同的是&#…

保险丝驱动电路·保险丝有什么用应该如何选型详解文章!!!

目录 保险丝基础知识 保险丝常见类型 保险丝功能讲解 保险丝驱动电路 ​​​​​​​ ​​​​​​​ 编写不易,仅供学习,请勿搬运,感谢理解 常见元器件驱动电路文章专栏连接 LM7805系列降压芯片驱动电路降压芯片驱动电…

如何在读博过程中缓解压力

博士生涯充满了挑战和压力,但通过一些实用的方法,我们可以有效地缓解这些压力。以下是我在博士期间采用的一些策略,希望能对正在读博或即将开始博士生涯的你有所帮助。 1. 周末彻底放松 在周末,我尽量避免进行论文写作。这两天…

ue5 替换角色的骨骼网格体和动画蓝图

一开始动画蓝图,骨骼网格体都是用的女性角色 现在把它换成男性 编译 保存 运行 把动画类换成ABP_Manny 进入ABP_Manny中 进入到idle 找到这个拖进来 编译 就变成站着端枪 运行一下,没有问题

西南大学计算机复试该怎么准备?有哪些注意事项?

西南大学计算机专业复试只有面试!只要你表现的自信大方,专业知识问题回答的很好,一般都没问题 一、考试内容 复试的考核内容包含以下几个方面: 1.专业素质和能力(占复试成绩的60%) (1&#x…

【UI自动化测试】selenium八种定位方式

🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论💬&am…

RDD的相关算子

一,算子的分类 整个DRR算子分为两大类: Transformation(转换算子): 返回值:是一个新的DRR 特点:转换算子只是定义数据的处理规则,并不会立刻执行,是lazy(…

简单编程实现QT程序黑色主题显示

代码如下 int main(int argc, char *argv[]) {QApplication a(argc, argv);//QSurfaceFormat::setDefaultFormat(QVTKOpenGLStereoWidget::defaultFormat());QPalette darkpalette;a.setStyle(QStyleFactory::create("Fusion"));darkpalette.setColor(QPalette::Wind…

【Redis】简介|优点|使用场景|为什么Redis快

目录 一、简介 二、特性(优点) 三、使用场景 一、简介 内存中存储数据的中间件,用于数据库,数据缓存,在分布式系统中能够大展拳脚 中间件:应用程序可以直接从 Redis 中获取数据,而不必频繁地…