QUiLoader Class
実行時にQt Widgets Designer フォームを読み込み、インスタンス化します。詳細...
| ヘッダー: | #include <QUiLoader> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS UiTools) target_link_libraries(mytarget PRIVATE Qt6::UiTools) |
| qmake: | QT += uitools |
| 継承元: | QObject |
パブリック関数
| QUiLoader(QObject *parent = nullptr) | |
| virtual | ~QUiLoader() override |
| void | addPluginPath(const QString &path) |
| QStringList | availableLayouts() const |
| QStringList | availableWidgets() const |
| void | clearPluginPaths() |
| virtual QAction * | createAction(QObject *parent = nullptr, const QString &name = QString()) |
| virtual QActionGroup * | createActionGroup(QObject *parent = nullptr, const QString &name = QString()) |
| virtual QLayout * | createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString()) |
| virtual QWidget * | createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString()) |
| QString | errorString() const |
| bool | isLanguageChangeEnabled() const |
| QWidget * | load(QIODevice *device, QWidget *parentWidget = nullptr) |
| QStringList | pluginPaths() const |
| void | setLanguageChangeEnabled(bool enabled) |
| void | setWorkingDirectory(const QDir &dir) |
| QDir | workingDirectory() const |
詳細な説明
QUiLoader を使用すると、UI ファイル(Qt Widgets Designer で作成されたもの)に保存されている情報に基づいて、QWidget ベースのユーザーインターフェースを動的に作成できます。
load() 関数は、UI ファイルの内容を読み込み、ファイル内に記述されたウィジェットをインスタンス化し、最上位の `QWidget` へのポインタを返します。このウィジェットは、その後表示することができます:
MyWidget::MyWidget(QWidget*parent)
: QWidget(parent)
{
QFile file(":/forms/myform.ui");
if(!file.open(QFile::ReadOnly))
qFatal("Cannot open resource file");
QUiLoader loader;
QWidget*myWidget =loader.load(&file, this);
QVBoxLayout*layout = newQVBoxLayout;
layout->addWidget(myWidget);
setLayout(layout);
}インスタンス化に失敗した場合、この関数はnullptr を返します。発生したエラーについて、人間が読みやすい説明を取得するには、errorString()関数を使用してください。
カスタムウィジェットを含むフォームの読み込み
UIファイルにQt Widgets Designer プラグインで実装されたカスタムウィジェットが含まれている場合、デフォルトでは読み込みに失敗します。これを回避するには、QUiLoader をサブクラス化し、createWidget()関数をオーバーライドします。これが不可能な場合は、addPluginPath()またはQT_PLUGIN_PATH 環境変数を通じてQt Widgets Designer プラグインの場所を追加することで、モジュールにプラグインを読み込ませることもできます。詳細については、「 Qt Widgets Designer 用のカスタムウィジェットの作成」ページを参照してください。
UI ファイルから特定のウィジェットを読み込む
UIファイル全体ではなく、特定のウィジェットのみをUIファイルから読み込むことができます。利用可能なウィジェットの名前を取得するにはavailableWidgets()関数を、特定のウィジェットをインスタンス化するにはcreateWidget()関数を使用します。例:
QWidget*loadCustomWidget(constQString&className,QWidget*parent)
{
QUiLoader loader;
QStringList availableWidgets=loader.availableWidgets();
if(!availableWidgets.contains(className)) {
qWarning() << "Cannot create widget" << className;
returnnullptr;
}
returnloader.createWidget(className,parent);
}ウィジェットの作成のカスタマイズ
createAction()、createActionGroup()、createLayout()、およびcreateWidget() 関数は、QUiLoader クラスがそれぞれアクション、アクショングループ、レイアウト、またはウィジェットを作成する必要がある際に、内部で使用されます。 QUiLoader をサブクラス化し、これらの関数を再実装することで、UI 作成のワークフローをカスタマイズできます。たとえば、フォームの読み込み時やカスタムウィジェットの作成時に、作成されたアクションのリストを表示したい場合などが考えられます。
例
QUiLoader クラスを使用した完全な例については、「Calculator Builder」を参照してください。
関連項目 Qt UI Tools およびQFormBuilder も参照してください。
メンバー関数のドキュメント
[explicit] QUiLoader::QUiLoader(QObject *parent = nullptr)
指定されたparent を使用して、フォームローダーを作成します。
[override virtual noexcept] QUiLoader::~QUiLoader()
ローダーを破壊する。
void QUiLoader::addPluginPath(const QString &path)
指定されたpath を、ローダーがプラグインを検索する際のパス一覧に追加します。
警告: 信頼できるパスだけ を設定してください。信頼できないユーザーが指定されたパスにコンテンツを作成または追加できるようにすると、セキュリティ上の脆弱性につながる可能性があります。
関連項目: pluginPaths() およびclearPluginPaths()。
QStringList QUiLoader::availableLayouts() const
createLayout() 関数を使用して構築可能な、利用可能なすべてのレイアウトのリストを返します。
createLayout()も参照してください 。
QStringList QUiLoader::availableWidgets() const
createWidget() 関数を使用して構築可能な、利用可能なすべてのウィジェットのリストを返します。つまり、指定されたプラグインパス内に定義されているすべてのウィジェットです。
pluginPaths() およびcreateWidget()も参照してください 。
void QUiLoader::clearPluginPaths()
プラグインを検索する際にローダーが検索するパス一覧をクリアします。
addPluginPath() およびpluginPaths()も参照してください 。
[virtual] QAction *QUiLoader::createAction(QObject *parent = nullptr, const QString &name = QString())
指定されたparent およびname を使用して、新しいアクションを作成します。
この関数は、QUiLoader クラスがアクションを作成する際にも内部で使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザーインターフェースやウィジェットの構築プロセスに介入することができます。ただし、実装の際には、必ず最初にQUiLoader のバージョンを呼び出すようにしてください。
createActionGroup()、createWidget()、およびload()も参照してください 。
[virtual] QActionGroup *QUiLoader::createActionGroup(QObject *parent = nullptr, const QString &name = QString())
指定されたparent およびname を使用して、新しいアクショングループを作成します。
この関数は、QUiLoader クラスがアクショングループを作成する際にも内部で使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザーインターフェースやウィジェットの構築プロセスに介入することができます。ただし、実装の際は、必ず最初にQUiLoader のバージョンを呼び出すようにしてください。
createAction()、createWidget()、およびload()も参照してください 。
[virtual] QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())
className で指定されたクラスを使用して、指定されたparent およびname を持つ新しいレイアウトを作成します。
この関数は、QUiLoader クラスがレイアウトを作成する際にも内部で使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザーインターフェースやウィジェットの構築プロセスに介入することができます。ただし、実装する際は、必ず最初にQUiLoader のバージョンを呼び出すようにしてください。
createWidget() およびload()も参照してください 。
[virtual] QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())
className で指定されたクラスを使用し、指定されたparent およびname を持つ新しいウィジェットを作成します。この関数を使用すると、availableWidgets()関数が返す任意のウィジェットを作成できます。
また、この関数は、QUiLoader クラスがウィジェットを作成する際に内部的に使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザーインターフェースやウィジェットの構築プロセスに介入することができます。ただし、実装の際には、必ず最初にQUiLoader のバージョンを呼び出すようにしてください。
availableWidgets() およびload()も参照してください 。
QString QUiLoader::errorString() const
load() で発生した直近のエラーについて、人間が理解しやすい説明を返します。
load()も参照してください 。
bool QUiLoader::isLanguageChangeEnabled() const
言語変更時の動的再翻訳が有効になっている場合は `true ` を返し、そうでない場合は `false ` を返します。
デフォルトはfalse です。
setLanguageChangeEnabled()も参照してください 。
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)
指定されたdevice からフォームをインスタンス化します。成功した場合は、指定されたparentWidget を持つ新しいQWidget を返します。それ以外の場合は、nullptr を返します。
警告: Qtリソースシステムなど、信頼できるソースからのみ フォームをロードしてください。信頼できないソースから.ui ファイルをロードすると、サービス拒否攻撃、UIの改ざん、予期しないプラグインの読み込みなど、アプリケーションにセキュリティ上の脅威をもたらす可能性があります。
createWidget() およびerrorString()も参照してください 。
QStringList QUiLoader::pluginPaths() const
カスタムウィジェットプラグインを検索する際に、ローダーが検索対象とするパスを列挙したリストを返します。
addPluginPath() およびclearPluginPaths()も参照してください 。
void QUiLoader::setLanguageChangeEnabled(bool enabled)
enabled が true の場合、このローダーによって読み込まれたユーザーインターフェースは、言語変更イベントを受信すると自動的に再翻訳されます。そうでない場合、ユーザーインターフェースは再翻訳されません。
isLanguageChangeEnabled()も参照してください 。
void QUiLoader::setWorkingDirectory(const QDir &dir)
ローダーの作業ディレクトリを `dir` に設定します。ローダーは、このディレクトリを基準とした相対パスで、アイコンやリソースファイルなどの他のリソースを検索します。
警告: 信頼できるディレクトリのみ を設定してください。信頼できないユーザーが作業ディレクトリ内にコンテンツを作成または追加できるようにすると、セキュリティ上の脆弱性が生じる可能性があります。
関連項目:workingDirectory()も参照してください 。
QDir QUiLoader::workingDirectory() const
ローダーの作業ディレクトリを返します。
setWorkingDirectory()も参照してください 。
© 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.