QAbstractFormBuilder Class
QAbstractFormBuilder 클래스는 실행 시점에 사용자 인터페이스를 생성하는 클래스를 위한 기본 구현을 제공합니다. 더 보기...
| 헤더: | #include <QAbstractFormBuilder> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Designer) target_link_libraries(mytarget PRIVATE Qt6::Designer) |
| qmake: | QT += designer |
| 상속된 항목: |
공개 함수
| QAbstractFormBuilder() | |
| QAbstractFormBuilder(const QAbstractFormBuilder &) | |
| QAbstractFormBuilder(QAbstractFormBuilder &&) | |
| virtual | ~QAbstractFormBuilder() |
| QString | errorString() const |
| virtual QWidget * | load(QIODevice *device, QWidget *parent = nullptr) |
| virtual void | save(QIODevice *device, QWidget *widget) |
| void | setWorkingDirectory(const QDir &directory) |
| QDir | workingDirectory() const |
| QAbstractFormBuilder & | operator=(QAbstractFormBuilder &&) |
| QAbstractFormBuilder & | operator=(const QAbstractFormBuilder &) |
상세 설명
QAbstractFormBuilder는 사용자 인터페이스 파일을 사용하여 양식을 생성하기 위한 표준 인터페이스와 기본 구현을 제공합니다. 이 클래스는 직접 인스턴스화되도록 의도되지 않았습니다. 런타임 시 UI 파일을 사용하여 사용자 인터페이스를 생성하려면 QFormBuilder 클래스를 사용하십시오. 예를 들어:
MyForm::MyForm(QWidget *parent)
: QWidget(parent)
{
QFormBuilder builder;
QFile file(":/forms/myWidget.ui");
file.open(QFile::ReadOnly);
QWidget *myWidget = builder.load(&file, this);
file.close();
auto *layout = new QVBoxLayout(this);
layout->addWidget(myWidget);
}폼 빌더의 동작 중 특정 부분을 재정의하려면 QAbstractFormBuilder를 상속받은 서브클래스를 만들고 관련 가상 함수를 재구현하십시오:
- load()는 임의의 QIODevices에서 UI 형식 파일을 읽고, 그 안에 포함된 XML 데이터를 기반으로 위젯을 생성하는 작업을 처리합니다.
- save()는 위젯 세부 정보를 UI 형식으로 임의의 QIODevices에 저장하는 작업을 처리합니다.
- workingDirectory() 및 setWorkingDirectory()은 폼이 저장되는 디렉터리를 제어합니다. 폼 빌더는 이 디렉터리를 기준으로 상대 경로에 있는 다른 리소스를 찾습니다.
QFormBuilder QUiLoader 클래스는 일반적으로 를 임베드하는 사용자 정의 컴포넌트 및 애플리케이션에서 사용됩니다. 실행 시점에 사용자 인터페이스를 동적으로 생성해야 하는 독립형 애플리케이션은 Qt Widgets DesignerQt UI Tools 모듈에 포함된 xml-ph-0002@deepl.internal를 사용합니다.
참조: Qt UI Tools.
멤버 함수 문서
QAbstractFormBuilder::QAbstractFormBuilder()
새로운 양식 생성기를 생성합니다.
[delete] QAbstractFormBuilder::QAbstractFormBuilder(const QAbstractFormBuilder &)
QAbstractFormBuilder 의 인스턴스를 복사 생성합니다. 이 함수는 삭제되었습니다.
[delete] QAbstractFormBuilder::QAbstractFormBuilder(QAbstractFormBuilder &&)
QAbstractFormBuilder 의 인스턴스를 Move 방식으로 생성합니다. 이 함수는 삭제되었습니다.
[virtual noexcept] QAbstractFormBuilder::~QAbstractFormBuilder()
폼 빌더를 삭제합니다.
QString QAbstractFormBuilder::errorString() const
load()에서 발생한 마지막 오류에 대한 사람이 읽기 쉬운 설명을 반환합니다.
load()도 참조하십시오 .
[virtual] QWidget *QAbstractFormBuilder::load(QIODevice *device, QWidget *parent = nullptr)
지정된 device 에서 위젯의 XML 표현을 불러오고, 지정된 parent 을 사용하여 새로운 위젯을 생성합니다.
save() 및 errorString()도 참조하십시오 .
[virtual] void QAbstractFormBuilder::save(QIODevice *device, QWidget *widget)
지정된 widget 의 XML 표현을 표준 UI 파일 형식으로 지정된 device 에 저장합니다.
참고: Qt Widgets Designer 에서 양식을 저장할 때와달리 , 모든 속성 값이 기록됩니다. 이는 속성 값이 수정되었는지 여부에 대한 상태가 Qt 속성 시스템에 저장되지 않기 때문입니다. 저장되는 위젯은 load()를 통해 로드된 것이 아니라 동적으로 생성되었을 수 있으므로, 이 경우 폼 빌더는 변경된 속성 목록을 인식하지 못합니다. 또한 동적으로 생성된 위젯에 대해 이를 처리할 수 있는 일반적인 방법은 없습니다.
따라서 결과 XML 파일을 불러오기 전에 필요하지 않은 속성을 제거해야 합니다. 또는 이 메서드를 호출할 때 저장할 속성을 이미 알고 있다면, ` computeProperties() `를 오버로드하여 필요한 속성만 필터링한 목록을 반환할 수 있습니다. 그렇지 않으면 일부 속성이 서로 의존할 수 있으므로 예기치 않은 동작이 발생할 수 있습니다.
load()도 참조하십시오 .
void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory)
폼 빌더의 현재 작업 디렉터리를 지정된 directory 로 설정합니다.
workingDirectory()도 참조하십시오 .
QDir QAbstractFormBuilder::workingDirectory() const
폼 빌더의 현재 작업 디렉터리를 반환합니다.
setWorkingDirectory()도 참조하십시오 .
[delete] QAbstractFormBuilder &QAbstractFormBuilder::operator=(QAbstractFormBuilder &&)
other 를 이 QAbstractFormBuilder 인스턴스에 이동 할당합니다. 이 함수는 삭제됩니다.
[delete] QAbstractFormBuilder &QAbstractFormBuilder::operator=(const QAbstractFormBuilder &)
other 를 이 QAbstractFormBuilder 인스턴스에 복사-할당합니다. 이 함수는 삭제됩니다.
© 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.