Qt QML 模块提供的重要 C++ 类
Qt Qml 模块提供了实现 QML 框架的 C++ 类。客户端可以使用这些类与 QML 运行时(例如,通过注入数据或在对象上调用方法)进行交互,并从 QML 文档中实例化对象层次结构。Qt QML 模块提供的 C++ API 比此处列出的类更多,但此处列出的类提供了 QML 运行时的基础和 QML 的核心概念。
QML 运行时
具有 C++ 入口的典型 QML 应用程序将实例化一个 QQmlEngine,然后使用 QQmlComponent 加载 QML 文档。该引擎提供了一个默认的 QQmlContext,它将是用于评估 QML 文档中定义的函数和表达式的顶级评估上下文。在 QML 文档中定义的对象层次结构将通过调用 QQmlComponent 实例的 create() 函数来实例化,假设在文档加载过程中未遇到错误。
客户端可能希望修改引擎提供的 QQmlContext,通过向上下文中注入属性或对象。他们可以调用 QQmlEngine::rootContext() 函数来访问顶级上下文。
实例化对象后,客户端通常将控制权传递给应用程序事件循环,以便将用户输入事件(如鼠标点击)交付并由应用程序处理。
注意:Qt Quick 模块提供了一个方便的类,QQuickView,它提供了一个 QML 运行时和用于显示 QML 应用的可视窗口。
QQmlEngine 类
QQmlEngine 类提供了一个可以管理由 QML 文档定义的对象层次结构的引擎。它提供了一个根 QML 上下文,在其中评估表达式,并确保在需要时正确更新对象的属性。
QQmlEngine 允许配置适用于它所管理的所有对象的全局设置;例如,用于网络通信的 QNetworkAccessManager 和用于持久存储的文件路径。
有关 QQmlEngine 类提供的内容以及如何在应用程序中使用它的详细信息,请参阅 QQmlEngine 类文档。
QQmlContext 类
QQmlContext 类提供了一个用于对象实例化和表达式评估的上下文。所有对象都在特定的上下文中实例化,并且应用程序运行期间评估的所有表达式都在特定的上下文中评估。此上下文定义了符号的解析方式,因此定义表达式操作的是哪些值。
请参阅QQmlContext类的文档,以获取有关如何通过添加或删除QQmlContext的属性来修改对象的评估上下文以及如何访问对象的上下文的详细信息。
动态对象实例化和表达式评估
动态对象实例化和动态表达式评估都是QML的核心概念。QML文档定义了可以在运行时使用QQmlComponent实例化的对象类型。可以直接在C++中创建QQmlComponent类的实例,或者在命令式QML代码中使用Qt.createComponent()函数创建。可以通过QQmlExpression类在C++中计算任意表达式,这种表达式可以直接与QML上下文交互。
QQmlComponent类
可以使用QQmlComponent类来加载QML文档。它需要一个QQmlEngine来实例化QML文档中定义的对象层次结构。
请参阅QQmlComponent类的文档以获取有关如何使用QQmlComponent的详细信息。
QQmlExpression类
QQmlExpression类提供了一种方式,使用户可以从C++中使用特定的QML评估上下文计算JavaScript表达式。这允许用户通过id访问QML对象,例如。评估的结果作为QVariant返回,转换规则由QML引擎定义。
请参阅QQmlExpression类的文档,以获取有关如何在应用程序中使用QQmlExpression的详细信息。
QML应用程序中类的使用
这些页面描述了如何创建与C++类交互的QML应用程序。
© 2024 The Qt Company Ltd. 此处包含的文档贡献是各自所有者的版权。此处提供的文档根据自由软件基金会出版的GNU自由文档许可协议版本1.3的条款提供。Qt和相关的标志是芬兰的The Qt Company Ltd. 和/或世界其他地区的商标。所有其他商标均为各自所有者的财产。