QML Language Server

QML Language Server 是 Qt 随附的一个工具,可帮助您在自己喜欢的(支持 LSP 的)编辑器中编写代码。更多信息,请参阅语言服务器协议

目前,它能让你的编辑器

  • 自动完成代码
  • 显示 qmllint 警告
  • 浏览 QML 文件中的定义
  • 查找 JavaScript 变量和 QML 对象的用法
  • 重命名 JavaScript 变量和 QML 对象
  • 格式化 QML 文件
  • 从 Qt 文档获取帮助

注: qmlls 目前正在开发中,详情请查看已知限制

支持的功能

检查

QML Language Server 可自动检查打开的 QML 文件,并在编辑器中直接显示警告或错误。有关检查过程的更多信息,请参阅qmllint;有关如何修复警告和错误,请参阅QML Lint Warning and Errors

格式化

QML Language Server 可在编辑器内格式化整个文件。有关格式化过程的更多信息,请参阅qmlformat

查找定义

QML Language Server 可从 JavaScript 变量、函数、QML 对象 ID 和 QML 属性的用法中查找它们的定义。

QML Language Server 还能找到 JavaScript 函数、QML 对象属性和 QML 对象实例化的类型注解中使用的类型定义。

查找用法

QML Language Server 可查找 JavaScript 变量、QML 对象属性、JavaScript 函数、QML 对象方法和 QML 对象 ID 的用法。

重命名

QML Language Server 可重命名 JavaScript 变量和函数,以及 QML 对象属性、方法和 ID,只要它们是在 QML 文件中定义的。

建议自动完成项目

QML Language Server 为 JavaScript 变量、表达式和语句以及 QML 对象属性、方法和 id 提供自动完成建议。

跟踪 C++ 文件中的更改

QML Language Server 可跟踪定义 QML 类型的 C++ 文件的更改。它会自动重建 CMake QML 模块,为 C++ 定义的 QML 类型提供准确、最新的警告和完成项。

您可以禁用此功能

文档提示

QML Language Server 包含文档提示功能,程序员可通过将鼠标悬停在关键字上快速访问 Qt Quick 文档。要使用该功能,您的 Qt 工具包应包含 Qt 文档,您的项目应使用QT_QML_GENERATE_QMLLS_INI变量构建。

在编辑器中设置QML Language Server

注意: 在使用Qt Online Installer 安装 Qt 时,您可以在<Qt installation folder>/bin/qmlls 下找到QML Language Server 二进制文件。

设置联编目录

QML Language Server 您需要知道构建文件夹的位置。您可以通过以下方式传递它:

  • --build-dir 命令行选项。在这种情况下,您的编辑器应按如下方式调用qmlls
    <path/to/qmlls> ... --build-dir <path/to/build-directory> ...
  • QMLLS_BUILD_DIRS 环境变量。
  • .qmlls.ini 设置文件,请参阅配置文件

注意: 当以多种方式指定构建目录时,命令行选项优先于环境变量,而环境变量优先于设置文件。

设置导入路径

QML Language Server 您需要知道项目中使用的 Qt 版本的导入路径。可以通过以下方式传递导入路径:

  • -I 命令行选项。在这种情况下,编辑器应按如下方式调用qmlls
    <path/to/qmlls> ... -I /path/to/imports -I /optional/path/to/another/import ...
  • QML_IMPORT_PATH 环境变量。在这种情况下,应将-E 选项传递给QML Language Server
  • .qmlls.ini 设置文件,请参阅配置文件

注意: 当以多种方式指定导入路径时,命令行选项优先于环境变量,环境变量优先于设置文件。

设置文档路径

QML Language Server 当知道项目中使用的 Qt 版本的文档路径时,Qt 可以显示文档提示。可以通过以下方式传递文档路径:

  • -d-p 命令行选项。在这种情况下,编辑器应按如下方式调用qmlls
    <path/to/qmlls> ... -d /path/to/docs ...
  • .qmlls.ini 设置文件,请参阅配置文件

注意: 当以多种方式指定文档路径时,命令行选项优先于环境变量,环境变量优先于设置文件。

禁用 CMake 自动编译

qmlls 当检测到 C++ 定义的 QML 类型的源代码被修改时,CMake 会尝试触发 CMake 重建。

要禁用此功能,请使用以下方法:

  • --no-cmake-calls 命令行选项。在这种情况下,您的编辑器应按如下方式调用qmlls
    <path/to/qmlls> --build-dir <path/to/build-directory> --no-cmake-calls
  • QMLLS_NO_CMAKE_CALLS 环境变量。
  • .qmlls.ini 设置文件,请参阅配置文件

配置文件

QML Language Server 可通过配置文件 进行配置。该文件应位于项目的源代码根目录下。它应该是一个 ini- 格式的文本文件。.qmlls.ini

注意: .qmlls.ini 文件可通过QT_QML_GENERATE_QMLLS_INI 自动生成。

配置文件应如下所示:

// .qmlls.ini
[General]
buildDir=<path/to/build-directory>
no-cmake-calls=<true-or-false>
docDir=<path/to/qt-documentation>
importPaths=<path/to/imports>

目前,配置文件可用于设置当前项目的构建目录,并可选择禁用 C++ 定义的 QML 类型的 CMake 自动重建功能。

注意: QML Language Server 可以使用--write-defaults 选项创建默认配置文件。这将覆盖当前目录下已有的 .qmlls.ini 文件。

已知限制

尽管QML Language Server 涵盖了许多常见的 QML 功能,但它仍处于开发阶段,一些功能尚未得到支持:

  • 在无效 QML 文件上建议自动完成。
  • 导航到 C++ 中定义的对象的定义。
  • 自动完成上下文属性

QML Language Server 可能会对项目发出错误警告

© 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.