QML Language Server

QML Language Server はQtに同梱されているツールで、好きな(LSPをサポートする)エディタでコードを書く手助けをしてくれます。詳しくはLanguage Server Protocolを参照してください。

現在のところ、エディタで以下のことができます:

  • コードのオートコンプリート
  • qmllint 警告の表示
  • QMLファイル内の定義への移動
  • JavaScript 変数や QML オブジェクトの使用法の検索
  • JavaScript 変数や QML オブジェクトの名前の変更
  • QML ファイルのフォーマット
  • Qt Documentation からヘルプを得る

注意: qmlls は現在開発中です。詳細は既知の制限を参照してください。

サポートされている機能

ファイル解析

QML Language Server は、開いた QML ファイルに自動的に lint を行い、警告やエラーをエディタに直接表示します。リント処理の詳細については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 は、QML ファイルで定義されている限り、JavaScript 変数や関数、QML オブジェクトのプロパティ、メソッド、id の名前を変更することができます。

オートコンプリート候補

QML Language Server は、JavaScript の変数、式、文、QML オブジェクトのプロパティ、メソッド、id のオートコンプリート候補を提供します。

C++ ファイルの変更追跡

QML Language Server は QML の型を定義する C++ ファイルの変更を追跡することができます。CMake QML モジュールを自動的にリビルドし、C++ で定義された QML タイプに対して、正確で最新の警告と補完項目を提供します。

この機能を無効にすることもできます。

ドキュメントヒント

QML Language Server には、プログラマーがキーワードにカーソルを合わせることで、Qt のドキュメントに素早くアクセスできるようにするドキュメントヒント機能があります。この機能を使用するには、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 環境変数。この場合、QML Language Server-E オプションを渡します。
  • .qmlls.ini 設定ファイル。「設定ファイル」を参照。

注意: インポートパスが複数の方法で指定されている場合、コマンドラインオプションが環境変数よりも優先され、設定ファイルよりも優先されます。

ドキュメント・パスの設定

QML Language Server は、プロジェクトで使用している Qt バージョンのドキュメントパスを知っている場合、ドキュメントヒントを表示することができます。ドキュメントパスは以下の方法で渡すことができます:

  • -d または-p コマンドラインオプション。この場合、エディタはqmlls を次のように呼び出します:
    <path/to/qmlls> ... -d /path/to/docs ...
  • .qmlls.ini 設定ファイル。「設定ファイル」を参照してください。

注意: ドキュメントパスを複数の方法で指定した場合、コマンドラインオプションが環境変数よりも優先され、設定ファイルよりも優先されます。

自動CMakeビルドを無効にする

qmlls は、C++で定義されたQML型のソースコードが変更されたことを検知すると、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の機能をカバーしていますが、QML Language Server はまだ開発中であり、未サポートの機能もあります:

  • 無効な QML ファイルに対するオートコンプリートの提案。
  • C++で定義されたオブジェクトの定義への移動。
  • コンテキスト・プロパティのオートコンプリート

QML Language Server を使用しているプロジェクトでは、誤検出の警告が出る可能性があります。

  • QMakeや命令型登録を使用しているプロジェクトでは、コンテキストプロパティの自動補完が誤った警告を出す可能性があります。
  • QML Language Server はビルド情報を使って QML モジュールを検索します。
  • QML モジュールがModern QML modulesのガイドラインに従っていない場合
  • QT_QML_GENERATE_QMLLS_INI を使っていない

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