PySide6.QtCore.QResource

class QResource

QResource 类提供了一个直接从资源读取的接口。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QResource 是一个表示与单个资源实体相关的一组数据(可能还有子数据)的对象。QResource 提供了直接访问原始格式字节的功能。通过这种方式,直接访问允许在不进行缓冲区复制或间接操作的情况下读取数据。当与资源实体交互时,间接操作通常很有用,就像它是一个文件一样,这可以通过 QFile 实现。QResource 背后的数据和子数据通常被编译到应用程序/库中,但也可以在运行时加载资源。当在运行时加载时,资源文件将作为一个大数据集加载,然后通过资源树中的引用以片段形式分发。

一个QResource可以通过绝对路径加载,也可以被视为以/字符为根的文件系统,或者以:字符为根的资源符号。也可以打开一个相对资源,它将在searchPaths()返回的路径列表中找到。

一个表示文件的QResource会有数据支持,这些数据可能被压缩,在这种情况下必须使用qUncompress()来访问真实数据;当通过QFile访问时,这种情况会隐式发生。一个表示目录的QResource只有子项而没有数据。

动态资源加载

资源可以从应用程序的二进制文件中省略,并在运行时通过使用registerResource()函数在需要时加载。传递给registerResource()的资源文件必须是由rcc创建的二进制资源。有关二进制资源的更多信息可以在The Qt Resource System文档中找到。

这在加载一组可能根据设置更改或可以由用户编辑并稍后重新创建的大型应用程序图标时通常很有用。资源会立即加载到内存中,无论是作为单个文件读取操作的结果,还是作为内存映射文件。

这种方法可以显著提高性能,因为只会加载一个文件,并且数据片段将通过setFileName()中请求的路径分发。

unregisterResource() 函数移除对特定文件的引用。如果有 QResource 对象当前引用了与未注册文件相关的资源,它们将继续有效,但资源文件本身将从资源根中移除,因此无法再创建指向此资源数据的 QResource。当最后一个指向该资源的 QResource 被销毁时,资源本身将从内存中解除映射。

腐败与安全

QResource 类对传递的文件执行一些检查,以确定当前版本的 Qt 是否支持该文件。这些测试仅用于检查文件头是否请求了未编译的功能(例如 Zstandard 解压缩)或文件是否不是未来版本的 Qt。它们不确认整个文件的有效性。

QResource 不应该用于那些来源不可信的文件。应用程序应设计为仅尝试加载那些来源至少与应用程序本身或其插件一样可信的资源文件。

class Compression

此枚举由compressionAlgorithm()使用,用于指示RCC工具用于压缩有效载荷的算法。

常量

描述

QResource.NoCompression

内容未压缩

QResource.ZlibCompression

内容使用zlib进行压缩,并且可以使用qUncompress()函数进行解压缩。

QResource.ZstdCompression

内容使用zstd进行压缩。要解压缩,请使用zstd库中的ZSTD_decompress函数。

另请参阅

compressionAlgorithm()

__init__([file=""[, locale=QLocale()]])
Parameters:

构造一个指向fileQResourcelocale用于加载资源数据的特定本地化版本。

absoluteFilePath()
Return type:

字符串

返回此QResource表示的实际路径,如果资源是通过searchPaths()找到的,它将在路径中指示。

另请参阅

fileName()

children()
Return type:

字符串列表

返回此目录中所有资源的列表,如果资源表示文件,则列表将为空。

另请参阅

isDir()

compressionAlgorithm()
Return type:

压缩

返回此资源使用的压缩类型(如果有)。如果未压缩,此函数返回 NoCompression

如果此函数返回 ZlibCompression,您可以使用 qUncompress() 函数解压数据。直到 Qt 5.13,这是唯一可能的压缩算法。

如果此函数返回 ZstdCompression,您需要使用 Zstandard 库函数( 头文件)。Qt 不提供封装。

参见 Zstandard 手册

另请参阅

data() isFile()

data()
Return type:

PyObject

返回一个指向该资源所表示数据段的只读缓冲区对象。如果资源被压缩,返回的数据也是压缩的,必须使用qUncompress()来访问数据。如果资源是一个目录,则返回None。

fileName()
Return type:

字符串

返回此QResource表示的文件在传递时的完整路径。

isDir()
Return type:

布尔

如果资源表示一个目录,因此可能包含children(),则返回true;如果资源表示一个文件,则返回false。

另请参阅

isFile()

isFile()
Return type:

布尔

如果资源表示文件并且有数据支持,则返回true,如果表示目录,则返回false。

另请参阅

isDir()

isValid()
Return type:

布尔

如果资源确实存在于资源层次结构中,则返回true,否则返回false。

lastModified()
Return type:

QDateTime

返回文件在打包成资源之前最后一次修改的日期和时间。

locale()
Return type:

QLocale

返回用于定位QResource数据的区域设置。

另请参阅

setLocale()

static registerResource(rccFilename[, resourceRoot=""])
Parameters:
  • rccFilename – str

  • resourceRoot – str

Return type:

布尔

将资源与给定的rccFileName在资源树中由mapRoot指定的位置注册,并返回true如果文件成功打开;否则返回false

另请参阅

unregisterResource()

static registerResourceData(rccData[, resourceRoot=""])
Parameters:
  • rccData – str

  • resourceRoot – str

Return type:

布尔

setFileName(file)
Parameters:

文件 – str

设置一个QResource指向filefile可以是绝对路径,在这种情况下直接打开,如果是相对路径,则会在searchPaths()中尝试找到该文件。

setLocale(locale)
Parameters:

localeQLocale

设置一个QResource仅加载资源的本地化到locale。如果找不到特定区域设置的资源,则使用C区域设置。

另请参阅

locale() setFileName()

size()
Return type:

整数

返回支持资源的存储数据的大小。

如果资源被压缩,此函数返回压缩数据的大小。有关未压缩的大小,请参见uncompressedSize()

uncompressedData()
Return type:

QByteArray

返回资源数据,如果数据是压缩存储的,则先解压缩。如果资源是一个目录或解压缩时发生错误,则返回一个空的QByteArray

注意

如果数据被压缩,每次调用此函数时都会解压缩。调用之间的结果不会被缓存。

uncompressedSize()
Return type:

整数

返回此资源中数据的大小。如果数据未被压缩,此函数返回与size()相同的结果。如果数据被压缩,则此函数从存储的流中提取原始未压缩数据的大小。

static unregisterResource(rccFilename[, resourceRoot=""])
Parameters:
  • rccFilename – str

  • resourceRoot – str

Return type:

布尔

注销在资源树中由mapRoot指定的位置处的给定rccFileName资源,并在资源成功卸载且不存在对该资源的引用时返回true;否则返回false

另请参阅

registerResource()

static unregisterResourceData(rccData[, resourceRoot=""])
Parameters:
  • rccData – str

  • resourceRoot – str

Return type:

布尔