PySide6的资源文件(.qrc 文件)简介以及RCC工具

embedded/2025/1/15 18:25:59/

 .qrc 文件       

        .qrc 文件是 Qt 资源系统(Qt Resource System)的一部分,用于定义应用程序的资源集合。这些资源可以是图像、图标、样式表、音频文件等。


.qrc 文件的格式

        .qrc 文件使用 XML 格式编写,下面将详细介绍 .qrc 文件的格式及其各个组成部分。

基本结构

一个典型的 .qrc 文件的基本结构如下:

<!DOCTYPE RCC><RCC version="1.0">
<qresource><file>path/to/resource1</file><file>path/to/resource2</file>
</qresource>
</RCC>

主要部分解释

1. <RCC> 根元素:

        • <RCC> 是 .qrc 文件的根元素,它包含一个 version 属性,指定资源文件的版本。通常使用 "1.0"。

        • 示例: <RCC version="1.0">
2. <qresource> 元素:

        • <qresource> 是包含所有资源文件的容器。每个资源文件需要列在 <file> 元素中。

        • 可以添加 prefix 属性来为资源文件指定一个前缀路径。

        • 示例: <qresource prefix="/icons">
            <file>icon1.png</file>
            <file>icon2.png</file>
            </qresource>
3. <file> 元素:

        • <file> 元素定义了一个资源文件的相对路径。路径是相对于 .qrc 文件所在目录的。

        • 示例: <file>images/image1.png</file>

      使用 prefix 属性 通过使用 <qresource> 元素的 prefix 属性,可以为资源文件指定一个虚拟路径前缀。这对于组织和分类资源非常有用。

例如:

<RCC version="1.0">
<qresource prefix="/icons"><file>icon1.png</file><file>icon2.png</file>
</qresource>
<qresource prefix="/styles"><file>style.qss</file>
</qresource>
</RCC>

        在这个例子中,资源文件可以通过以下路径访问:

        /icons/icon1.png,

        /icons/icon2.png,

        /styles/style.qss  


其他可选属性

        1. lang 属性:

        • 可以为 <qresource> 元素指定 lang 属性,用于多语言资源的管理。

        • 示例:

<qresource lang="en">
<file>en/welcome.txt</file>
</qresource>
<qresource lang="fr"><file>fr/welcome.txt</file>
</qresource>

     2. alias 属性:

        • 可以为 <file> 元素指定 alias 属性,为资源文件指定一个别名。

        • 示例:

 <qresource><file alias="main_icon">icons/icon.png</file>
</qresource>

一个完整的 .qrc 文件示例 

<!DOCTYPE RCC><RCC version="1.0">
<qresource><file>images/logo.png</file><file>images/background.jpg</file>
</qresource>
<qresource prefix="/icons"><file>icons/icon1.png</file><file>icons/icon2.png</file>
</qresource>
<qresource prefix="/styles"><file>styles/default.qss</file>
</qresource>
<qresource lang="en"><file>translations/en.qm</file>
</qresource>
<qresource lang="fr"><file>translations/fr.qm</file>
</qresource>
</RCC>

使用Qt Designer新建.qrc文件的方法

 • 如果使用designer来设计界面文件,在designer的右下角的资源管理器也可以添加和编辑资源文件:

        1、新建资源文件:

               • 点击“编辑资源”按钮

        • 点击“新建资源文件”按钮

        • 添加资源:

        新建资源后,可以看到一个空白的资源列表:

        • 要添加资源文件,可以点击窗口底部的`Add`(添加)按钮,然后选择要添加的资源类型,如`Add Files`(添加文件)来添加图片、文本文件等,或者选择`Add Prefix`(添加前缀)来为资源设置一个前缀,方便组织和管理资源。

        • 例如,添加一个图片资源,点击`Add Files`后,在弹出的文件选择对话框中,找到并选择要添加的图片文件,点击`Open`(打开)按钮,图片文件就会被添加到资源列表中,并且会自动生成一个别名,别名默认为文件名,也可以手动修改别名。

        • 保存.qrc文件。


总结

        .qrc 文件使用 XML 格式定义了应用程序的资源集合,允许通过路径前缀(prefix)和别名(alias)来组织和管理资源。这种结构使得资源的管理和访问更加清晰和方便。

       



RCC工具

        在使用 PySide6 进行开发时,管理应用程序的资源(如图标、图片、样式表等)是一个常见的任务。PySide6 提供了一个工具 pyside6-rcc,它能够将资源文件(.qrc)编译成 Python 模块,从而使这些资源可以被应用程序轻松地加载和使用。


使用步骤        

1. 创建资源文件 (.qrc)

        • 首先,创建一个资源文件(.qrc )文件,这个文件定义了应用程序所使用的资源。

        • 例如,创建一个名为 resources.qrc 的文件,内容如下:

<!DOCTYPE RCC><RCC version="1.0">
<qresource><file alias="logo.png">images/logo.png</file><file alias="style.qss">styles/style.qss</file>
</qresource>
</RCC>

        在这里使用了alias属性为资源文件指定了一个别名,若不使用  alias  ,则默认使用文件的原始路径作为引用路径。。

2. 使用 pyside6-rcc 工具生成 Python 模块

        • 使用 pyside6-rcc 工具将 .qrc 文件编译成 Python 模块。

        • 打开终端,导航到包含 resources.qrc 文件的目录,然后运行以下命令:

pyside6-rcc -o resources_rc.py resources.qrc

        这个命令会生成一个名为 resources_rc.py 的 Python 文件,这个文件包含了所有资源的二进制数据。

        • 如果在pycharm的外挂工具中配置过pyside6-rcc ,在pycharm中鼠标右键,在弹出菜单的外挂工具中选择RCC工具也可以生成.py的Python 文件。

3. 在应用程序中导入生成的资源模块,并使用图像资源

        在应用程序脚本中,导入生成的 resources_rc.py 模块,以便应用程序可以访问这些资源。

from PySide6.QtWidgets import QApplication, QLabel
from PySide6.QtGui import QPixmap
import sys
import resource_rc  # 导入资源文件if __name__ == '__main__':app = QApplication(sys.argv)label = QLabel()label.setMinimumSize(300, 300)pixmap = QPixmap(":/logo.png")  # 使用资源前缀和别名加载图片label.setPixmap(pixmap)label.show()sys.exit(app.exec())

注意字符串前面需要用“:”冒号开始。

. 使用图像资源作为窗口的图标

from PySide6.QtWidgets import QApplication, QWidget
import resource_rc  # 导入资源文件app = QApplication([])
app.setStyleSheet(":/style.qss")  # 使用资源前缀和别名加载样式表
window = QWidget()
window.setWindowIcon(QIcon(":/icon.png")) 
window.show()
app.exec()

使用其他资源

除图像资源以外的其他多种资源的使用:

. 使用样式表资源:

from PySide6.QtWidgets import QApplication, QWidget
import resource_rc  # 导入资源文件app = QApplication([])
app.setStyleSheet(":/style.qss")  # 使用资源前缀和别名加载样式表
window = QWidget()
window.show()
app.exec()

. 使用字体资源:

 假设  resource.qrc  中添加了字体资源,内容如下:

<RCC>
<qresource><file alias="customFont">fonts/MyCustomFont.ttf</file>
</qresource>
</RCC>

使用该字体资源的代码:

from PySide6.QtWidgets import QApplication, QLabel
from PySide6.QtGui import QFontDatabase, QFont
import resource_rc  # 导入资源文件app = QApplication([])
# 加载字体
font_id = QFontDatabase.addApplicationFont(":/customFont")
font_family = QFontDatabase.applicationFontFamilies(font_id)[0]
font = QFont(font_family)
# 使用字体
label = QLabel("Hello, world!")
label.setFont(font)
label.show()
app.exec()

. 使用音频视频资源:

 假设  resource.qrc  中添加了音频视频资源,内容如下:

<RCC>
<qresource><file alias="sampleVideo">media/sample_video.mp4</file><file alias="sampleAudio">media/sample_audio.mp3</file>
</qresource>
</RCC>

使用该音频视频资源的代码:

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout
from PySide6.QtMultimedia import QMediaPlayer, QMediaContent
from PySide6.QtMultimediaWidgets import QVideoWidget
import resource_rc  # 导入资源文件app = QApplication([])
window = QWidget()
layout = QVBoxLayout(window)
# 设置视频播放器
video_widget = QVideoWidget()
player = QMediaPlayer()
player.setVideoOutput(video_widget)
player.setMedia(QMediaContent(QUrl("qrc:/sampleVideo")))
video_widget.show()
player.play()
# 添加到布局
layout.addWidget(video_widget)
window.setLayout(layout)
window.show()
app.exec()


http://www.ppmy.cn/embedded/154159.html

相关文章

Unocss 中 !important 的使用及相关特性解析

​ 引言 在前端开发中&#xff0c;样式冲突是经常会遇到的问题。Unocss 作为一款强大的原子化 CSS 框架&#xff0c;提供了许多便捷的方式来处理样式&#xff0c;其中 !important 的使用有着独特的规则和场景。本文将深入探讨这些内容&#xff0c;并介绍一些其他有用的 Unocss …

【后端面试总结】tls中.crt和.key的关系

tls中.crt和.key的关系 引言 在现代网络通信中&#xff0c;特别是基于SSL/TLS协议的加密通信中&#xff0c;.crt和.key文件扮演着至关重要的角色。这两个文件分别代表了数字证书和私钥&#xff0c;是确保通信双方身份认证和数据传输安全性的基石。本文旨在深入探讨TLS中.crt和…

打桩机:灾害救援中的 “应急尖兵”,稳固支撑的保障|鼎跃安全

在自然灾害或突发事故中&#xff0c;如地震、泥石流、洪涝灾害、山体滑坡等&#xff0c;地质条件的不稳定可能导致建筑物倒塌、道路损毁、堤坝决口等情况&#xff0c;严重威胁人员和财产安全。 打桩机是一种用于将桩打入地基的重型机械设备&#xff0c;其主要功能是提供支撑力&…

k8s基础(6)—Kubernetes-存储

Kubernetes-存储概述 k8s的持久券简介 Kubernetes的持久卷&#xff08;PersistentVolume, PV&#xff09;和持久卷声明&#xff08;PersistentVolumeClaim, PVC&#xff09;为用户在Kubernetes中使用卷提供了抽象。PV是集群中的一块存储&#xff0c;PVC是对这部分存储的请求。…

单元测试流程

1.如何编写测试 odoo 的后端测试使用的是unittest,只需要在模块文件下增加一个test的目录即可,注意该test目录不需要被模块文件里的_init_.py文件导入,然后就是使用unittest的框架方式写测试用例 2.启动单元测试 首先建立一个新的数据库并且选择加载演示数据(demo data) 然后…

Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性

Centos9-SSH免密登录配置-修改22端口-关闭密码登录 生成秘钥对将公钥信息存进authorized_keys测试登录查询访问记录、比对指纹更换22访问端口关闭账号密码登录 生成秘钥对 生成密钥对&#xff0c;指定 备注 和 文件目录命令执行后&#xff0c;默认两次回车&#xff0c;不设置秘…

服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台服务器上的8块硬盘组建了一组raid5磁盘阵列。上层安装windows server操作系统&#xff0c;部署了oracle数据库。 raid5阵列中有2块硬盘的硬盘指示灯显示异常报警。服务器操作系统无法启动&#xff0c;ORACLE数据库也无法启动。 服…

SpringBoot链接Kafka

一、SpringBoot生产者 &#xff08;1&#xff09;修改SpringBoot核心配置文件application.propeties, 添加生产者相关信息 # 连接 Kafka 集群 spring.kafka.bootstrap-servers192.168.134.47:9093# SASL_PLAINTEXT 和 SCRAM-SHA-512 认证配置 spring.kafka.properties.securi…