PySide6.QtQml.QQmlAbstractUrlInterceptor

class QQmlAbstractUrlInterceptor

允许您控制QML文件加载。更多

概要

方法

虚拟方法

注意

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

详细描述

QQmlAbstractUrlInterceptor 是一个接口,可用于在 QML 引擎使用 URL 之前对其进行修改。这主要用于将文件 URL 修改为其他文件 URL,例如为当前平台选择不同的图形资源。

相对URL在根据当前QML上下文的文件路径解析后被拦截。URL拦截也在为加载的QML文件设置基本路径后发生。这意味着为该QML文件加载的内容使用被拦截的URL,但在文件内部,使用拦截前的URL来解析相对路径。这允许拦截.qml文件的加载,而不需要在拦截内容中的所有路径(或本地类型)中插入不同的相对路径。

与setNetworkAccessManagerFactory相比,QQmlAbstractUrlInterceptor影响所有URL和路径,包括本地文件和嵌入式资源文件。QQmlAbstractUrlInterceptor是同步的,对于异步文件必须返回带有异步方案(如http或由您自己的自定义QNetworkAccessManager处理的自定义方案)的URL。您可以使用QQmlAbstractUrlInterceptor将文件URL更改为由您自己的自定义QNetworkAccessManager处理的网络URL。

要实现自定义网络方案的支持,请参阅 setNetworkAccessManagerFactory。

class DataType

指定URL拦截发生的位置。

因为QML加载qmldir文件来定位类型,所以在加载QML类型时涉及两个URL。用于定位类型的(可能是隐式的)qmldir的URL和定义类型的文件的URL。拦截这两者会导致复杂的URL替换或对同一文件进行双重URL替换。

常量

描述

QQmlAbstractUrlInterceptor.QmldirFile

被拦截的URL是用于Qmldir文件的。拦截这个,但不拦截QmlFile,允许替换整个子树。

QQmlAbstractUrlInterceptor.JavaScriptFile

被拦截的URL是一个Javascript文件的导入。

QQmlAbstractUrlInterceptor.QmlFile

被拦截的URL是针对Qml文件的。拦截这个文件,但不拦截Qmldir文件,保持QML文件的基础目录不变,并像用另一个文件替换该文件一样操作。

QQmlAbstractUrlInterceptor.UrlString

被拦截的URL是QML文件中的一个url属性,而不是通过引擎加载文件时使用的。

__init__()

QQmlAbstractUrlInterceptor 的构造函数。

abstract intercept(path, type)
Parameters:
Return type:

QUrl

一个纯虚函数,您可以在此拦截url。返回的值将作为url的新值。被拦截的url类型由type变量给出。

此函数的实现必须是线程安全的,因为它可以同时从多个线程调用。