QML 与 JavaScript 的集成
QML 语言采用类似 JSON 的语法,允许将各种表达式和方法定义为 JavaScript 函数。它还允许用户导入 JavaScript 文件,并使用这些导入文件所提供的功能。
这使得开发人员和设计师能够利用他们所掌握的JavaScript知识,快速开发用户界面和应用程序逻辑。
JavaScript 表达式
QML 与 JavaScript 深度集成,允许使用 JavaScript 定义信号处理程序和方法。QML 的另一项核心功能是能够使用属性绑定来指定和强制执行对象属性之间的关系,而属性绑定同样通过 JavaScript 定义。
有关在 QML 中使用 JavaScript 表达式的更多信息,请参阅题为《QML 文档中的 JavaScript 表达式》的文档页面。
从 JavaScript 动态创建 QML 对象
QML 支持从 JavaScript 内部动态创建对象。这有助于将对象的实例化延迟到必要之时,从而缩短应用程序的启动时间。它还允许根据用户输入或其他事件,动态创建视觉对象并将其添加到场景中。该功能主要有两种使用方式。
可以通过动态创建对象的方式,以命令式方法从 JavaScript中动态创建对象。例如,当 QML 被用作应用程序脚本语言时,这会非常有用。
注意:在 创建用户界面时 ,推荐使用声明式结构来动态创建对象,因为这些结构与 QML 引擎和工具集的集成效果最佳。有多种类型可用于实现此功能,例如 `Loader`、`Instantiator` 和 `Repeater ` 等类型。
JavaScript 资源
在 JavaScript 函数中定义的应用程序逻辑可以分离到单独的 JavaScript 文件中,这些文件被称为 JavaScript 资源。JavaScript 资源有多种类型,各自具有不同的语义。
有关为 QML 定义JavaScript 资源的更多信息,请参阅题为《在 QML 中定义 JavaScript 资源》的文档页面。
JavaScript 导入
QML 文档可以导入 JavaScript 资源,而 JavaScript 资源也可以导入其他 JavaScript 资源以及 QML 模块。这使得应用程序开发人员能够以模块化、自包含的文件形式提供应用程序逻辑。
有关如何导入JavaScript资源以及如何使用它们所提供功能的更多信息,请参阅题为《导入 JavaScript 资源》的文档页面。
JavaScript 宿主环境
QML 引擎提供了一个 JavaScript 环境,该环境与 Web 浏览器提供的 JavaScript 环境存在一些差异。在该环境中运行的代码受某些限制,且 QML 引擎在根上下文中提供了各种对象,这些对象对 JavaScript 开发人员来说可能比较陌生。
这些限制和扩展在 QML 引擎提供的JavaScript 宿主环境说明中都有详细记载。
此外,还有关于 JavaScript 引擎所采用的内存管理的深入说明。
配置 JavaScript 引擎
针对特定的使用场景,您可能需要重写 JavaScript 引擎在内存管理和 JavaScript 编译过程中使用的某些参数。有关这些参数的更多信息,请参阅《配置 JavaScript 引擎》。
使应用程序支持脚本化
除了在 Qml 文档中使用 JavaScript 之外,Qt 还允许您将 JavaScript 引擎嵌入到 C++ 应用程序中,使其支持脚本。这使得您无需重新编译应用程序即可使用 JavaScript 扩展应用程序的功能。
有关在 C++ 应用程序中使用 JavaScript 引擎的详细信息(包括如何将 `QObject ` 实例暴露给脚本以及安全注意事项),请参阅《使应用程序支持脚本》。
© 2026 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.