QUiLoader Class

독립 실행형 애플리케이션이 런타임에 UI 파일에 저장되거나 플러그인 경로에 지정된 정보를 사용하여 사용자 인터페이스를 동적으로 생성할 수 있도록 하는 QUiLoader 클래스입니다. 더 보기...

Header: #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() 함수를 사용하여 검색할 수 있습니다. 마찬가지로 load() 함수를 사용하여 UI 파일의 내용을 검색할 수 있습니다. 예를 들어

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 ToolsQFormBuilder 를 참조하세요.

멤버 함수 문서

[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 가 참이면 이 로더가 로드한 사용자 인터페이스는 언어 변경 이벤트를 수신하면 자동으로 다시 번역됩니다. 그렇지 않으면 사용자 인터페이스가 다시 번역되지 않습니다.

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.