Qt Qml 模块提供的重要 C++ 类
模块 Qt Qml模块提供了实现 QML 框架的 C++ 类。客户端可使用这些类与 QML 运行时交互(例如,通过注入数据或调用对象上的方法),并从 QML 文档实例化对象层次。Qt Qml 模块提供的 C++ API 不只是这里列出的类,但这里列出的类提供了 QML Runtime 的基础和 QML 的核心概念。
QML Runtime
具有 C++ 入口点的典型 QML 应用程序将实例化QQmlEngine ,然后使用QQmlComponent 加载 QML 文档。引擎提供了一个默认的QQmlContext ,它将是用于评估 QML 文档中定义的函数和表达式的顶层评估上下文。QML 文档中定义的对象层次结构将通过调用QQmlComponent 实例的create() 函数来实例化,前提是在文档加载过程中没有遇到错误。
客户端可能希望通过向上下文注入属性或对象来修改引擎提供的QQmlContext 。他们可以调用QQmlEngine::rootContext() 函数来访问顶级上下文。
实例化对象后,客户端通常会将控制权传递给应用程序事件循环,以便应用程序可以传递和处理用户输入事件(如鼠标点击)。
注: Qt Quick 模块提供了一个便利类QQuickView ,它提供了一个 QML Runtime 和可视窗口,用于显示 QML 应用程序。
QQmlEngine 类
QQmlEngine 类提供了一个引擎,可管理 QML 文档中定义的对象层次。它提供了一个根 QML 上下文,表达式在其中进行评估,并确保在需要时正确更新对象的属性。
QQmlEngine 允许配置适用于其管理的所有对象的全局设置;例如,用于网络通信的QNetworkAccessManager 和用于持久存储的文件路径。
有关QQmlEngine 类提供的功能以及如何在应用程序中使用该类的深入信息,请参阅QQmlEngine 类文档。
QQmlContext 类
QQmlContext 类为对象实例化和表达式评估提供了上下文。所有对象都是在特定上下文中实例化的,应用程序运行时的所有表达式都是在特定上下文中求值的。该上下文定义了符号的解析方式,以及表达式的操作值。
有关如何通过添加或删除QQmlContext 的属性来修改对象的求值上下文,以及如何访问对象的上下文的深入信息,请参阅QQmlContext 类文档。
动态对象实例化和表达式评估
动态对象实例化和动态表达式评估都是 QML 的核心概念。QML 文档定义的对象类型可以在运行时使用QQmlComponent 进行实例化。一个QQmlComponent 类的实例可以在 C++ 中直接创建,也可以通过 QML 命令代码中的Qt.createComponent() 函数创建。可通过QQmlExpression 类在 C++ 中计算任意表达式,这些表达式可直接与 QML 上下文交互。
QQmlComponent 类
QQmlComponent 类可用于加载 QML 文档。它需要QQmlEngine 才能实例化 QML 文档中定义的对象层次。
有关如何使用QQmlComponent 的详细信息,请参阅QQmlComponent 类文档。
QQmlExpression 类
QQmlExpression 类为客户端提供了一种使用特定 QML 评估上下文从 C++ 评估 JavaScript 表达式的方法。例如,这允许客户端通过 id 访问 QML 对象。评估结果以QVariant 的形式返回,转换规则由 QML 引擎定义。
有关如何在应用程序中使用QQmlExpression 的详细信息,请参阅QQmlExpression 类文档。
QML 应用程序中类的使用
这些页面描述了如何创建与 C++ 类交互的 QML 应用程序:
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.