- class QQmlAbstractUrlInterceptor#
允许您控制 QML 文件加载。 更多…
摘要#
方法#
def
__init__()
虚方法#
def
intercept()
备注
此文档可能包含自动从 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
的构造函数。这是一个纯虚函数,您可以使用它来拦截
url
。返回的值将作为新的url值。正在拦截的url类型由type
变量给出。由于这个函数可能同时被多个线程调用,所以您的实现必须是线程安全的。