函数#

qjsEngine(arg__1)#
参数:

arg__1QObject

返回类型:

QJSEngine

返回与 object 关联的 QJSEngine,如果有的话。

此函数对于你已将 QObject 暴露给 JavaScript 环境且在程序后续需要重新访问的情况非常有用。它不需要你保留从 newQObject() 返回的包装器。

qmlClearTypeRegistrations()#

清除所有存储的类型注册,例如使用 qmlRegisterType() 生成的那些。

在存在 QQmlEngine 时不要调用此函数,否则行为将是未定义的。在使用此函数之前,必须删除任何现有的 QQmlEngines。此函数仅影响应用程序全局缓存。删除 QQmlEngine 以清除与该引擎相关的所有缓存数据。

qmlContext(arg__1)#
参数:

arg__1QObject

返回类型:

QQmlContext

qmlEngine(arg__1)#
参数:

arg__1QObject

返回类型:

QQmlEngine

qmlProtectModule(uri, majVersion)#
参数:
  • uri – str

  • majVersion – int

返回类型:

bool

此函数用于保护模块免遭进一步修改。这可以用来防止其他插件将类型注入到你的模块中。它还可以提高性能,因为它允许引擎在达到此导入点时跳过检查新类型或插件的可能性。

一旦调用 qmlProtectModule,QML 引擎将不再搜索新的 qmldir 文件来加载该模块。不过,它将重新使用之前加载的任何 qmldir 文件。因此,在此点存在的类型将继续工作。请注意,不同的 QML 引擎可能会加载不同的模块。模块保护是全局的,并会影响所有引擎。在速度较慢的文件系统中,定位 qmldir 文件和加载插件的开销可能会比较明显。因此,当你确定不再需要加载模块时,保护模块可能是一种不错的优化。请注意,模块锁不仅影响插件,还影响任何其他 qmldir 指令,如 importprefer,以及在任何 qmldir 文件中声明的复合类型或脚本。

此外,调用此函数后,任何尝试将 C++ 类型注册到此 uri 和主版本组合的表达式都将导致运行时错误。

如果找到并且锁定具有 uri 作为模块标识符和 majVersion 作为主版本号模块,则返回 true,否则返回 false。必须包含导出类型才能找到该模块。

qmlRegisterModule(uri, versionMajor, versionMinor)#
参数:
  • uri – str

  • versionMajor – int

  • versionMinor – int

该函数将一个模块注册到特定 uri,该模块的版本由 versionMajorversionMinor 指定。

这可以在不注册该版本类型的情况下使特定模块版本可用。这特别有用,可以保持相关模块版本的同步。

qmlRegisterSingletonType(url, uri, versionMajor, versionMinor, qmlName)#
参数:
  • urlQUrl

  • uri – str

  • versionMajor – int

  • versionMinor – int

  • qmlName – str

返回类型:

int

qmlRegisterType(url, uri, versionMajor, versionMinor, qmlName)#
参数:
  • urlQUrl

  • uri – str

  • versionMajor – int

  • versionMinor – int

  • qmlName – str

返回类型:

int

qmlRegisterUncreatableMetaObject(staticMetaObject, uri, versionMajor, versionMinor, qmlName, reason)#
参数:
  • staticMetaObjectQMetaObject

  • 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 命名并在 versionMajorversionMinor 中指定的版本注册的类型 QML 类型标识符。

此函数返回的值与 QML 类型注册函数(如 qmlRegisterType()qmlRegisterSingletonType())相同。

如果 qmlNameuriversionMajor 与已注册的类型相匹配,但 versionMinor 中指定的次要版本号更高,则返回最接近次要版本的类型的 id。

如果没有找到匹配的类型或提供的参数无效,则返回 -1。

参见

QML_ELEMENT() QML_NAMED_ELEMENT() QML_SINGLETON() qmlRegisterType() qmlRegisterSingletonType()

qmlAttachedPropertiesObject(type_obj, arg__2[, arg__3=true])#
参数:
  • type_objPyTypeObject

  • arg__2QObject

  • arg__3 – bool

返回类型:

QObject

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 导入的库中以由 versionMajorversionMinor 组成的版本号组成。例如,这将为名为 ‘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)

此函数用于注册具有特定 uritypeName 的单例 Python 对象 instanceObject。它的版本是由 versionMajorversionMinor 组成的组合。使用此函数将给定类型 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 导入的库中,版本号是由 versionMajorversionMinor 组成的,当尝试创建类型时显示 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

当作为导入模块的主版本号传递时,表示基本模块的版本将被转发。