class QQmlAbstractUrlInterceptor#

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

摘要#

方法#

虚方法#

备注

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

详细描述#

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

在解决当前 QML 上下文的文件路径后,会拦截相对 URL。在设置已加载 QML 文件的基路径后也会发生 URL 拦截。这意味着为此 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 文件的 URL。拦截此 URL,但不拦截 QmlFile,允许替换整个子树。

QQmlAbstractUrlInterceptor.JavaScriptFile

正在拦截的 URL 是对 JavaScript 文件的导入。

QQmlAbstractUrlInterceptor.QmlFile

正在拦截的 URL 是 Qml 文件的 URL。拦截此 URL,但不拦截 qmldir 文件,不会更改 QML 文件的基目录,并且 resembles 替换文件为另一文件。

QQmlAbstractUrlInterceptor.UrlString

正在拦截的 URL 是 QML 文件中的一个 URL 属性,并且不是通过引擎加载文件使用的。

__init__()#

QQmlAbstractUrlInterceptor 的构造函数。

abstract intercept(path, type)#
参数:
返回类型::

QUrl

这是一个纯虚函数,您可以使用它来拦截 url。返回的值将作为新的url值。正在拦截的url类型由 type 变量给出。

由于这个函数可能同时被多个线程调用,所以您的实现必须是线程安全的。