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 Language Server は、例えば同じプロジェクトで定義された QML モジュールを見つけるためにビルド情報を必要とするため、ビルドされていないプロジェクトに対して誤った警告を出す可能性があります。
多くの一般的な QML 機能をカバーしていますが、QML Language Server はまだ開発中であり、未対応の機能もあります:
- QML型の名前の変更
- 無効なQMLファイルに対するオートコンプリートの提案
- C++で定義されたオブジェクトの定義へのナビゲート。
- QMLとJavaScriptのすべての言語コンストラクトをすべての機能でサポートする。
QML Language Server の QML コードモデルは、JavaScript のすべての言語コンストラクトをまだサポートしていません。そのため、定義への移動や使用法の検索など、一部の機能はこれらの言語コンストラクトでは動作しない可能性があります。
© 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.