QUiLoader Class

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

Header: #include <QUiLoader>
CMake: find_package(Qt6 REQUIRED COMPONENTS UiTools)
target_link_libraries(mytarget PRIVATE Qt6::UiTools)
qmake: QT += uitools
Inherits: 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クラスは、(Qt Widgets Designerで作成された)UIファイルに格納された情報、または指定されたプラグインパスで利用可能な情報に基づいてウィジェットを作成できる関数のコレクションを提供します。指定されたプラグインパスは、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クラスを使用した完全な例については、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())

与えられた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() も参照して ください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。