函数¶
返回与object关联的QJSEngine(如果有的话)。
如果您已经将一个QObject暴露给JavaScript环境,并且稍后在程序中想要重新获得访问权限,这个函数非常有用。它不需要您保留从newQObject()返回的包装器。
- qmlClearTypeRegistrations()¶
清除所有存储的类型注册,例如那些由qmlRegisterType()生成的。
在存在QQmlEngine时不要调用此函数,否则行为将是未定义的。在调用此函数之前,必须删除所有现有的QQmlEngines。此函数仅影响应用程序全局缓存。删除QQmlEngine以清除与该引擎相关的所有缓存数据。
- qmlProtectModule(uri, majVersion)¶
- Parameters:
uri – 字符串
majVersion – int
- Return type:
布尔
此函数保护模块免受进一步修改。这可以用于防止其他插件将类型注入到您的模块中。它还可以提高性能,因为当达到此导入时,它允许引擎跳过检查新类型或插件的可能性。
一旦调用了qmlProtectModule,QML引擎将不再搜索新的qmldir文件来加载模块。不过,它会重用之前加载的任何qmldir文件。因此,此时存在的类型将继续工作。请注意,不同的QML引擎可能会加载不同的模块。然而,模块保护是全局的,会影响所有引擎。在文件系统较慢的情况下,定位qmldir文件和加载插件的开销可能会很明显。因此,一旦确定不再需要加载模块,保护模块可能是一个很好的优化。还要注意,模块锁定不仅影响插件,还影响任何其他qmldir指令,如import或prefer,以及在qmldir文件中声明的任何复合类型或脚本。
此外,调用此函数后,任何尝试将C++类型注册到此URI和主要版本组合的操作都将导致运行时错误。
如果找到并锁定了以uri作为模块标识符和majVersion作为主版本号的模块,则返回true,否则返回false。模块必须包含导出的类型才能被找到。
- qmlRegisterModule(uri, versionMajor, versionMinor)¶
- Parameters:
uri – 字符串
versionMajor – int
versionMinor – int
此函数在特定的uri中注册一个模块,并在versionMajor和versionMinor中指定版本。
这可以用于使某个模块版本可用,即使没有为该版本注册类型。这对于保持相关模块版本的同步特别有用。
- qmlRegisterSingletonType(url, uri, versionMajor, versionMinor, qmlName)¶
- Parameters:
url –
QUrluri – 字符串
versionMajor – int
versionMinor – int
qmlName – str
- Return type:
整数
此函数可用于注册一个名为qmlName的单例类型,该类型从版本号由versionMajor和versionMinor组成的uri导入的库中。该类型由位于url的QML文件定义。URL必须是绝对URL,即url.isRelative() == false。
此外,类型的QML文件必须在其导入语句中包含pragma Singleton语句。
单例类型可以通过其注册的类型名称引用,并且该类型名称可以用作Connections类型中的目标,或者像任何其他类型ID一样使用。一个例外是,单例类型属性不能被别名化(因为单例类型名称不标识与任何其他项在同一组件中的对象)。
用法:
// Second, register the QML singleton type by calling this function in an initialization function. qmlRegisterSingletonType(QUrl("file:///absolute/path/SingletonType.qml"), "Qt.example.qobjectSingleton", 1, 0, "RegisteredSingleton");
为了在QML中使用注册的单例类型,您必须导入单例类型。
也可以在不使用qmlRegisterSingletonType函数的情况下注册QML单例类型。这可以通过在类型的QML文件的导入中添加pragma Singleton语句来实现。此外,类型必须在带有singleton关键字的qmldir文件中定义,并且使用单例的QML文件必须导入该qmldir。
另请参阅
QML_SINGLETON()
- qmlRegisterType(url, uri, versionMajor, versionMinor, qmlName)¶
- Parameters:
url –
QUrluri – 字符串
versionMajor – int
versionMinor – int
qmlName – str
- Return type:
整数
此函数在QML系统中注册一个类型,名称为qmlName,该类型从uri导入的库中获取,版本号由versionMajor和versionMinor组成。该类型由位于url的QML文件定义。URL必须是绝对URL,即url.isRelative() == false。
通常,QML文件可以直接从其他QML文件加载为类型,或者使用qmldir文件。此函数允许从C++代码中注册文件到类型,例如在启动时需要程序化确定类型映射时。
如果注册不成功,返回-1。
- qmlRegisterUncreatableMetaObject(staticMetaObject, uri, versionMajor, versionMinor, qmlName, reason)¶
- Parameters:
staticMetaObject –
QMetaObjecturi – 字符串
versionMajor – int
versionMinor – int
qmlName – str
reason – str
- Return type:
整数
此函数在QML系统中注册staticMetaObject及其扩展,使用从uri导入的库中的名称qmlName,版本号由versionMajor和versionMinor组成。
无法创建元对象的实例。如果用户尝试创建它,将打印带有给定reason的错误消息。
此函数对于注册Q_NAMESPACE命名空间非常有用。
返回QML类型ID。
例如:
namespace MyNamespace { Q_NAMESPACE enum MyEnum { Key1, Key2, }; Q_ENUM_NS(MyEnum) } //... qmlRegisterUncreatableMetaObject(MyNamespace::staticMetaObject, "io.qt", 1, 0, "MyNamespace", "Access to enums & flags only");
在QML方面,您现在可以使用注册的枚举:
Component.onCompleted: console.log(MyNamespace.Key2)另请参阅
QML_ELEMENT()QML_NAMED_ELEMENT()QML_UNCREATABLE()
- qmlTypeId(uri, versionMajor, versionMinor, qmlName)¶
- Parameters:
uri – 字符串
versionMajor – int
versionMinor – int
qmlName – str
- Return type:
整数
返回在特定uri中注册的名为qmlName的类型的QML类型ID,并在versionMajor和versionMinor中指定了版本。
此函数返回与QML类型注册函数(如qmlRegisterType()和qmlRegisterSingletonType())相同的值。
如果 qmlName、uri 和 versionMajor 匹配到一个已注册的类型,但 versionMinor 中指定的次要版本更高,则返回具有最接近的次要版本的类型的 id。
如果没有找到匹配的类型或给定的参数之一无效,则返回-1。
注意
: qmlTypeId 尝试使模块可用,即使它们尚未被任何引擎访问。这可能会在第一次访问模块时引入开销。尝试从不存在模块中查找类型总是会引入这种开销。
另请参阅
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¶
- Parameters:
pytype (type) – Python 类
uri (str) – 在QML中导入组件时使用的uri
versionMajor (int) – 主版本号
versionMinor (int) – 次要版本
qmlName (str) – 暴露给QML的名称
- Returns:
int (QML 类型 id)
此函数在QML系统中注册Python 类型,名称为qmlName,在从uri导入的库中,版本号由versionMajor和versionMinor组成。例如,这将注册一个Python类‘MySliderItem’作为名为‘Slider’的QML类型,用于名为‘com.mycompany.qmlcomponents’的模块的‘1.0’版本:
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¶
- Parameters:
pytype (type) – Python 类
uri (str) – 在QML中导入组件时使用的uri
versionMajor (int) – 主版本号
versionMinor (int) – 次要版本
typeName (str) – 暴露给QML的名称
callback (object) – Python 可调用对象(用于处理 Python 类型)
- Returns:
int (QML 类型 id)
此函数将Python类型注册为QML系统中的单例,使用提供的回调(该回调以QQmlEngine作为参数)来生成单例。
- qmlRegisterSingletonType(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str) int¶
- Parameters:
pytype (type) – Python 类
uri (str) – 在QML中导入组件时使用的uri
versionMajor (int) – 主版本号
versionMinor (int) – 次要版本
typeName (str) – 暴露给QML的名称
- Returns:
int (QML 类型 id)
此函数将Python类型注册为QML系统中的单例。
或者,可以使用 QmlSingleton 装饰器。
- qmlRegisterSingletonType(uri: str, versionMajor: int, versionMinor: int, typeName: str, callback: object) int¶
- Parameters:
uri (str) – 在QML中导入组件时使用的uri
versionMajor (int) – 主版本号
versionMinor (int) – 次要版本
typeName (str) – 暴露给QML的名称
callback (object) – Python 可调用对象(用于处理 QJSValue)
- Returns:
int (QML 类型 id)
此函数使用提供的回调(该回调以QQmlEngine作为参数)在QML系统中注册一个QJSValue作为单例,以生成单例。
- qmlRegisterSingletonInstance(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str, instanceObject: object) int¶
- Parameters:
pytype (type) – Python 类
uri (str) – 在QML中导入组件时使用的uri
versionMajor (int) – 主版本号
versionMinor (int) – 次要版本
typeName (str) – 暴露给QML的名称
instanceObject (object) – 要注册的单例对象
- Returns:
int (QML 类型 id)
此函数注册一个单例Python对象instanceObject,具有特定的uri和typeName。其版本是versionMajor和versionMinor的组合。使用此函数将给定类型pytype的对象注册为单例类型。
- qmlRegisterUncreatableType(pytype: type, uri: str, versionMajor: int, versionMinor: int, qmlName: str, noCreationReason: str) int¶
- Parameters:
pytype (type) – Python 类
uri (str) – 在QML中导入组件时使用的uri
versionMajor (int) – 主版本号
versionMinor (int) – 次要版本
qmlName (str) – 暴露给QML的名称
noCreationReason (str) – 尝试创建QML类型时显示的错误消息
- Returns:
int (QML 类型 id)
此函数将Python 类型注册到QML系统中,作为一个不可创建的类型,名称为qmlName,在从uri导入的库中,版本号由versionMajor和versionMinor组成,当尝试创建该类型时,显示noCreationReason作为错误消息。例如,这将一个名为‘MySliderItem’的Python类注册为名为‘Slider’的QML类型,用于名为‘com.mycompany.qmlcomponents’的模块的‘1.0’版本:
- ::
qmlRegisterUncreatableType(MySliderItem, “com.mycompany.qmlcomponents”, 1, 0, “Slider”, “Slider 无法创建。”)
请注意,库将类型注册到比库实际版本更旧的版本是完全合理的。实际上,新库通常会允许针对先前版本编写的QML继续工作,即使某些类型的更高级版本已经可用。
或者,可以使用QmlUncreatable装饰器。
枚举¶
- class QML_HAS_ATTACHED_PROPERTIES¶
- class QQmlModuleImportSpecialVersions¶
定义了一些可以传递给
qmlRegisterModuleImport()和qmlUnregisterModuleImport()的版本参数的特殊值。常量
描述
QQmlEngine.QQmlModuleImportModuleAny
当作为基础模块的majorVersion传递时,表示导入将应用于模块的任何版本。
QQmlEngine.QQmlModuleImportLatest
当作为导入模块的主版本或次版本传递时,表示应导入最新的整体版本,或指定主版本的最新次版本。
QQmlEngine.QQmlModuleImportAuto
当作为导入模块的主版本传递时,表示应转发基础模块的版本。