QUiLoader Class

QUiLoaderクラスは、スタンドアロン・アプリケーションが、UIファイルに格納された情報やプラグイン・パスで指定された情報を使って、実行時にユーザー・インターフェースを動的に作成することを可能にします。詳細...

ヘッダー #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

詳細説明

さらに、独自のローダークラスを派生させることで、独自のユーザーインターフェイスをカスタマイズまたは作成することができます。

カスタムコンポーネントやQt Widgets Designerを組み込んだアプリケーションを使用している場合、QtDesigner モジュールによって提供されるQFormBuilder クラスを使用して、UI ファイルからユーザーインターフェイスを作成することもできます。

QUiLoader クラスは、UI ファイル(Qt Widgets Designer で作成されたもの)に格納されている情報、または指定されたプラグイン パスで利用可能な情報に基づいてウィジェットを作成できる関数のコレクションを提供します。指定されたプラグインパスは、pluginPaths() 関数を使用して取得できます。同様に、UI ファイルの内容はload() 関数を使用して取得できます。例えば

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    QUiLoader loader;
    QFile file(":/forms/myform.ui");
    file.open(QFile::ReadOnly);
    QWidget *myWidget = loader.load(&file, this);
    file.close();

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(myWidget);
    setLayout(layout);
}

ユーザー・インターフェースをフォームのリソース(myform.qrc )に含めることで、実行時に確実に存在するようになります:

<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/forms">
<file>myform.ui</file>
</qresource>
</RCC>

availableWidgets() 関数は、指定されたプラグイン・パスで利用可能なウィジェットのクラス名をQStringList として返します。これらのウィジェットを作成するには、createWidget() 関数を使用します。例えば

QWidget *loadCustomWidget(QWidget *parent)
{
    QUiLoader loader;
    QWidget *myWidget;

    QStringList availableWidgets = loader.availableWidgets();

    if (availableWidgets.contains("AnalogClock"))
        myWidget = loader.createWidget("AnalogClock", parent);

    return myWidget;
}

カスタム・ウィジェットをローダで利用可能にするには、addPluginPath() 関数を使用します。利用可能なウィジェットをすべて削除するには、clearPluginPaths() 関数を呼び出します。

createAction(),createActionGroup(),createLayout(),createWidget() 関数は、QUiLoaderクラスがアクション、アクショングループ、レイアウト、ウィジェットを作成する際に内部的に使用します。そのため、QUiLoaderクラスをサブクラス化し、これらの関数を再実装することで、ユーザーインターフェースの構築プロセスに介入することができます。例えば、フォームをロードする時やカスタムウィジェットを作成する時に作成されるアクションのリストが欲しいかもしれません。

QUiLoaderクラスを使用した完全な例については、電卓ビルダーを参照してください。

また 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())

与えられたparentname で新しいアクションを作成します。

この関数は、QUiLoader クラスがウィジェットを作成するときにも内部的に使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザー・インターフェースやウィジェットを作成するプロセスに介入することができます。ただし、実装の際には、QUiLoader のバージョンを最初に呼び出すようにしてください。

createActionGroup()、createWidget()、load()も参照のこと

[virtual] QActionGroup *QUiLoader::createActionGroup(QObject *parent = nullptr, const QString &name = QString())

与えられたparentname で新しいアクショングループを作成します。

この関数は、QUiLoader クラスがウィジェットを作成するときにも内部的に使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザー・インターフェースやウィジェットを作成するプロセスに介入することができます。ただし、実装の際には、QUiLoader のバージョンを最初に呼び出すようにしてください。

createAction()、createWidget()、load()も参照のこと

[virtual] QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())

className で指定されたクラスを使用して、与えられたparentname で新しいレイアウトを作成します。

この関数は、QUiLoader クラスがウィジェットを作成するときにも内部的に使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザー・インターフェースやウィジェットの構築プロセスに介入することができます。ただし、実装の際には、QUiLoader のバージョンを最初に呼び出すようにしてください。

createWidget() およびload()も参照

[virtual] QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())

className で指定されたクラスを使用して、指定されたparentname で新しいウィジェットを作成します。この関数を使用して、availableWidgets() 関数によって返されるウィジェットを作成できます。

この関数は、QUiLoader クラスがウィジェットを作成するときにも内部的に使用されます。したがって、QUiLoader をサブクラス化し、この関数を再実装することで、ユーザー・インターフェースやウィジェットの作成プロセスに介入することができます。ただし、実装の際には、QUiLoader のバージョンを最初に呼び出すようにしてください。

availableWidgets() およびload()も参照

QString QUiLoader::errorString() const

load() で発生した最後のエラーについて、人間が読める説明を返す。

load()も参照

bool QUiLoader::isLanguageChangeEnabled() const

言語変更時の動的な再翻訳が有効な場合は true を返し、そうでない場合は false を返します。

setLanguageChangeEnabled()も参照 ください。

QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)

与えられたdevice からフォームを読み込み、その内容を保持するために、与えられたparentWidget で新しいウィジェットを作成します。

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()も参照

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