プラグインの展開
このトピックでは、実行時にQtまたはアプリケーションが読み込むためのプラグインライブラリを展開する方法について説明します。静的プラグインを使用する場合、プラグインのコードはすでにアプリケーションの実行ファイルの一部となっているため、別途展開手順は必要ありません。
プラグインディレクトリ
Qt では、アプリケーションの起動時に、そのアプリケーションの実行ファイルが置かれているディレクトリが、Qt がプラグインを検索するベースディレクトリとなります。
たとえば、Windows の場合、アプリケーションがC:\Program Files\MyApp にあり、スタイルプラグインがある場合、Qt はC:\Program Files\MyApp\styles を検索します。
アプリケーションの実行ファイルがどこにあるかを確認するには、QCoreApplication::applicationDirPath() を参照してください。
Qt は、QLibraryInfo::path(QLibraryInfo::PluginsPath) で指定されたディレクトリも検索しますが、これは通常QTDIR/plugins にあります。QTDIR は Qt がインストールされているディレクトリです。Qt に追加の場所を検索させたい場合は、QCoreApplication::addLibraryPath() を呼び出して必要なだけパスを追加できます。独自のパスを設定したい場合は、QCoreApplication::setLibraryPaths() を使用できます。
あるいは、qt.conf ファイルを使用して、Qtライブラリにコンパイルされているハードコードされたパスを上書きすることもできます。詳細については、「qt.confの使用」を参照してください。
もう一つの方法は、アプリケーションを実行する前にQT_PLUGIN_PATH 環境変数を設定することです。複数のパスは、システムのパス区切り文字で区切って指定できます。この変数が設定されると、Qt はこの変数で指定されたパスからプラグインを検索します。
注: QT_PLUGIN_PATH をシステム全体の環境変数としてエクスポートしないでください 。他のQtインストールと競合する可能性があります。
プラグインの動的な読み込みと検証
プラグインをロードする際、Qt ライブラリは、そのプラグインをロードして使用できるかどうかを判断するための妥当性チェックを行います。この妥当性チェックにより、複数の Qt バージョンや構成を並行してインストールすることが可能になります。
以下のルールが適用されます:
- マイナーバージョン番号がより高い Qt ライブラリにリンクされたプラグインは、マイナーバージョン番号がより低いライブラリでは読み込まれません。
例:Qt 6.2.0 は、Qt 6.3.0 でビルドされたプラグインを読み込みません。例:Qt 6.2.0 は、Qt 6.1.0 でビルドされたプラグインを読み込みます。例:Qt 6.2.0 は、Qt 6.2.1 でビルドされたプラグインを読み込みます。 - メジャーバージョン番号が低い Qt ライブラリにリンクされたプラグインは、メジャーバージョン番号が高いライブラリでは読み込まれません。
例:Qt 6.0.0 では、Qt 5.15.0 でビルドされたプラグインは読み込まれません。
アプリケーションを拡張するためのプラグインをビルドする際は、プラグインがアプリケーションと同じ方法で構成されていることを確認することが重要です。つまり、アプリケーションがリリースモードでビルドされている場合、プラグインもリリースモードでビルドする必要があります。ただし、Unix オペレーティングシステムを除きます。Unix オペレーティングシステムでは、プラグインシステムは、アプリケーションとは異なるモードでビルドされたプラグインをロードしません。
プラグインのデバッグ
正しく記述されたプラグインであっても、それを利用するように設計されたアプリケーションで動作しない原因となる問題がいくつかあります。その多くは、プラグインとアプリケーションのビルド方法の違いに関連しており、多くの場合、別々のビルドシステムやプロセスに起因しています。
Qtがロードしようとする各プラグインに関する診断情報を取得するには、QT_DEBUG_PLUGINS 環境変数を使用します。アプリケーションを起動する環境で、この変数を0以外の値に設定してください。
以下の表は、開発者がプラグインを作成する際に遭遇する問題の一般的な原因と、考えられる解決策について説明しています。
| 問題 | 原因 | 解決策 |
|---|---|---|
| アプリケーションから直接開いた場合でも、プラグインの読み込みが静かに失敗する。Qt Widgets Designer の「Help|About Plugins 」ダイアログにはプラグインライブラリが表示されるが、それぞれの項目にはプラグインが一覧表示されない。 | アプリケーションとそのプラグインが、異なるモードでビルドされています。 | 実行ファイルと同じ構成でプラグインをビルドしてください。 |
© 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.