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 = new QVBoxLayout;
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(const QString&className, QWidget*parent)
{
QUiLoader loader;
QStringList availableWidgets = loader.availableWidgets();
if (!availableWidgets.contains(className)) {
qWarning() << "Cannot create widget" << className;
return nullptr;
}
return loader.createWidget(className, parent);
}위젯 생성 사용자 정의
createAction(), createActionGroup(), createLayout(), createWidget() 함수는 QUiLoader 클래스가 각각 액션, 액션 그룹, 레이아웃 또는 위젯을 생성해야 할 때마다 내부적으로 사용됩니다. QUiLoader의 서브클래스를 생성하고 이러한 함수를 재구현하여 UI 생성 워크플로를 사용자 정의할 수 있습니다. 예를 들어, 양식을 불러오거나 사용자 정의 위젯을 생성할 때 생성된 액션 목록을 표시하고 싶을 수 있습니다.
예제
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())
지정된 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.