函数#
返回与 object
关联的 QJSEngine
,如果有的话。
此函数对于你已将 QObject 暴露给 JavaScript 环境且在程序后续需要重新访问的情况非常有用。它不需要你保留从 newQObject()
返回的包装器。
- qmlClearTypeRegistrations()#
清除所有存储的类型注册,例如使用 qmlRegisterType()
生成的那些。
在存在 QQmlEngine
时不要调用此函数,否则行为将是未定义的。在使用此函数之前,必须删除任何现有的 QQmlEngines。此函数仅影响应用程序全局缓存。删除 QQmlEngine
以清除与该引擎相关的所有缓存数据。
- qmlProtectModule(uri, majVersion)#
- 参数:
uri – str
majVersion – int
- 返回类型:
bool
此函数用于保护模块免遭进一步修改。这可以用来防止其他插件将类型注入到你的模块中。它还可以提高性能,因为它允许引擎在达到此导入点时跳过检查新类型或插件的可能性。
一旦调用 qmlProtectModule,QML 引擎将不再搜索新的 qmldir
文件来加载该模块。不过,它将重新使用之前加载的任何 qmldir
文件。因此,在此点存在的类型将继续工作。请注意,不同的 QML 引擎可能会加载不同的模块。模块保护是全局的,并会影响所有引擎。在速度较慢的文件系统中,定位 qmldir
文件和加载插件的开销可能会比较明显。因此,当你确定不再需要加载模块时,保护模块可能是一种不错的优化。请注意,模块锁不仅影响插件,还影响任何其他 qmldir 指令,如 import
或 prefer
,以及在任何 qmldir
文件中声明的复合类型或脚本。
此外,调用此函数后,任何尝试将 C++ 类型注册到此 uri 和主版本组合的表达式都将导致运行时错误。
如果找到并且锁定具有 uri
作为模块标识符和 majVersion
作为主版本号模块,则返回 true,否则返回 false。必须包含导出类型才能找到该模块。
- qmlRegisterModule(uri, versionMajor, versionMinor)#
- 参数:
uri – str
versionMajor – int
versionMinor – int
该函数将一个模块注册到特定 uri
,该模块的版本由 versionMajor
和 versionMinor
指定。
这可以在不注册该版本类型的情况下使特定模块版本可用。这特别有用,可以保持相关模块版本的同步。
- qmlRegisterSingletonType(url, uri, versionMajor, versionMinor, qmlName)#
- 参数:
url –
QUrl
uri – str
versionMajor – int
versionMinor – int
qmlName – str
- 返回类型:
int
- qmlRegisterType(url, uri, versionMajor, versionMinor, qmlName)#
- 参数:
url –
QUrl
uri – str
versionMajor – int
versionMinor – int
qmlName – str
- 返回类型:
int
- qmlRegisterUncreatableMetaObject(staticMetaObject, uri, versionMajor, versionMinor, qmlName, reason)#
- 参数:
staticMetaObject –
QMetaObject
uri – str
versionMajor – int
versionMinor – int
qmlName – str
reason – str
- 返回类型:
int
- qmlTypeId(uri, versionMajor, versionMinor, qmlName)#
- 参数:
uri – str
versionMajor – int
versionMinor – int
qmlName – str
- 返回类型:
int
返回在特定 uri
中以 qmlName
命名并在 versionMajor
和 versionMinor
中指定的版本注册的类型 QML 类型标识符。
此函数返回的值与 QML 类型注册函数(如 qmlRegisterType()
和 qmlRegisterSingletonType()
)相同。
如果 qmlName
、uri
和 versionMajor
与已注册的类型相匹配,但 versionMinor
中指定的次要版本号更高,则返回最接近次要版本的类型的 id。
如果没有找到匹配的类型或提供的参数无效,则返回 -1。
参见
QML_ELEMENT()
QML_NAMED_ELEMENT()
QML_SINGLETON()
qmlRegisterType()
qmlRegisterSingletonType()
- qmlAttachedPropertiesObject(type_obj, arg__2[, arg__3=true])#
- qmlRegisterType(pytype: type, uri: str, versionMajor: int, versionMinor: int, qmlName: str) int #
- 参数:
pytype (type) – Python 类
uri (str) – 在 QML 中导入组件时使用的 uri
versionMajor (int) – 主版本
versionMinor (int) – 次版本
qmlName (str) – 暴露给 QML 的名称
- 返回::
int (QML 类型 id)
此函数使用名称 qmlName 在 QML 系统中注册 Python 的 type,它在从 uri 导入的库中以由 versionMajor 和 versionMinor 组成的版本号组成。例如,这将为名为 ‘com.mycompany.qmlcomponents’ 的模块的版本 ‘1.0’ 注册一个名为 ‘Slider’ 的 QML 类型,该模块中有一个 Python 类 ‘MySliderItem’。
qmlRegisterType(MySliderItem, "com.mycompany.qmlcomponents", 1, 0, "Slider")
注册后,该类型可以在 QML 中使用,通过导入指定的模块名称和版本号。
import com.mycompany.qmlcomponents 1.0 Slider { ... }
请注意,库注册比库的实际版本更旧的类型的做法是完全合理的。实际上,新库通常允许针对旧版本编写的 QML 继续工作,即使它的某些类型的更高级版本可用。
- qmlRegisterSingletonType(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str, callback: object) int #
- 参数:
pytype (type) – Python 类
uri (str) – 在 QML 中导入组件时使用的 uri
versionMajor (int) – 主版本
versionMinor (int) – 次版本
typeName (str) – 对 QML 暴露的名称
callback (object) – Python 可调用对象(用于处理 Python 类型)
- 返回::
int (QML 类型 id)
此函数使用提供的回调函数(该回调函数接收一个 QQmlEngine 作为参数)将 Python 类型注册为 QML 系统中的单例。
- qmlRegisterSingletonType(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str) int #
- 参数:
pytype (type) – Python 类
uri (str) – 在 QML 中导入组件时使用的 uri
versionMajor (int) – 主版本
versionMinor (int) – 次版本
typeName (str) – 对 QML 暴露的名称
- 返回::
int (QML 类型 id)
此函数将 Python 类型注册为 QML 系统中的单例。
或者,可以使用 QmlSingleton 装饰器。
- qmlRegisterSingletonType(uri: str, versionMajor: int, versionMinor: int, typeName: str, callback: object) int #
- 参数:
uri (str) – 在 QML 中导入组件时使用的 uri
versionMajor (int) – 主版本
versionMinor (int) – 次版本
typeName (str) – 对 QML 暴露的名称
callback (object) – Python 可调用对象(用于处理 QJSValue)
- 返回::
int (QML 类型 id)
此函数使用提供的回调函数(该回调函数接收一个 QQmlEngine 作为参数)将 QJSValue 注册为 QML 系统中的单例。
- qmlRegisterSingletonInstance(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str, instanceObject: object) int #
- 参数:
pytype (type) – Python 类
uri (str) – 在 QML 中导入组件时使用的 uri
versionMajor (int) – 主版本
versionMinor (int) – 次版本
typeName (str) – 对 QML 暴露的名称
instanceObject (对象) – 要注册的单例对象
- 返回::
int (QML 类型 id)
此函数用于注册具有特定 uri 和 typeName 的单例 Python 对象 instanceObject。它的版本是由 versionMajor 和 versionMinor 组成的组合。使用此函数将给定类型 pytype 的对象注册为单例类型。
- qmlRegisterUncreatableType(pytype: type, uri: str, versionMajor: int, versionMinor: int, qmlName: str, noCreationReason: str) int #
- 参数:
pytype (type) – Python 类
uri (str) – 在 QML 中导入组件时使用的 uri
versionMajor (int) – 主版本
versionMinor (int) – 次版本
qmlName (str) – 暴露给 QML 的名称
noCreationReason (字符串) – 尝试创建 QML 类型时显示的错误消息
- 返回::
int (QML 类型 id)
此函数将 Python type 注册到 QML 系统中,作为一个不可创建的类型 qmlName,在从 uri 导入的库中,版本号是由 versionMajor 和 versionMinor 组成的,当尝试创建类型时显示 noCreationReason 作为错误消息。例如,将 Python 类 ‘MySliderItem’ 注册为名为 ‘Slider’ 的 QML 类型,版本为 ‘1.0’ 的模块名为 ‘com.mycompany.qmlcomponents’
- ::
qmlRegisterUncreatableType(MySliderItem, “com.mycompany.qmlcomponents”, 1, 0, “Slider”, “Slider 不能创建。”)
请注意,库注册比库的实际版本更旧的类型的做法是完全合理的。实际上,新库通常允许针对旧版本编写的 QML 继续工作,即使它的某些类型的更高级版本可用。
或者,可以使用 QmlUncreatable 装饰器。
枚举#
- class QML_HAS_ATTACHED_PROPERTIES#
- class QQmlModuleImportSpecialVersions#
定义可以传递给
qmlRegisterModuleImport()
和qmlUnregisterModuleImport()
版本参数的一些特殊值。常量
描述
QQmlEngine.QQmlModuleImportModuleAny
当作为基本模块的主版本号传递时,表示将对模块的任何版本进行导入。
QQmlEngine.QQmlModuleImportLatest
当作为导入模块的主版本号或副版本号传递时,表示将导入指定主版本的最新总体版本或最新副版本。
QQmlEngine.QQmlModuleImportAuto
当作为导入模块的主版本号传递时,表示基本模块的版本将被转发。