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