QQmlApplicationEngine Class

QQmlApplicationEngine은 단일 QML 파일에서 애플리케이션을 로드하는 편리한 방법을 제공합니다. 더 보기...

Header: #include <QQmlApplicationEngine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
상속합니다: QQmlEngine

공용 함수

QQmlApplicationEngine(QObject *parent = nullptr)
QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr)
QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr)
(since 6.5) QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent = nullptr)
virtual ~QQmlApplicationEngine() override
QList<QObject *> rootObjects() const

공용 슬롯

void load(const QString &filePath)
void load(const QUrl &url)
void loadData(const QByteArray &data, const QUrl &url = QUrl())
(since 6.5) void loadFromModule(QAnyStringView uri, QAnyStringView typeName)
(since 6.0) void setExtraFileSelectors(const QStringList &extraFileSelectors)
void setInitialProperties(const QVariantMap &initialProperties)

시그널

void objectCreated(QObject *object, const QUrl &url)
(since 6.4) void objectCreationFailed(const QUrl &url)

상세 설명

이 클래스는 QQmlEngineQQmlComponent 를 결합하여 단일 QML 파일을 로드하는 편리한 방법을 제공합니다. 또한 C++/QML 하이브리드 애플리케이션이 일반적으로 C++에서 제어하는 일부 중앙 애플리케이션 기능을 QML에 노출합니다.

이렇게 사용할 수 있습니다:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine("main.qml");
    return app.exec();
}

QQuickView 와 달리 QQmlApplicationEngine은 루트 창을 자동으로 생성하지 않습니다. Qt Quick 의 시각적 항목을 사용하는 경우 Window 안에 해당 항목을 배치해야 합니다.

QGuiApplication (예: QtQuick)이 필요한 QML 모듈을 사용하지 않는 경우 QQmlApplicationEngine과 함께 QCoreApplication 을 사용할 수도 있습니다.

기본 설정에서 변경된 구성 목록 QQmlEngine:

  • quit()를 QCoreApplication::quit()로 Qt.
  • 기본 QML 파일에 인접한 i18n 디렉토리에서 번역 파일을 자동으로 로드합니다.
    • 번역 파일에는 "qml_" 접두사가 있어야 합니다(예: qml_ja_JP.qm).
  • QJSEngine::uiLanguage / Qt.uiLanguage 속성이 변경되면 번역이 다시 로드됩니다.
  • 씬에 QQuickWindow 이 포함된 경우 인큐베이션 컨트롤러를 자동으로 설정합니다.
  • QQmlFileSelector 을 URL 인터셉터로 자동 설정하여 모든 QML 파일과 에셋에 파일 선택기를 적용합니다.

QQmlEngine 에서 상속된 메서드를 사용하여 엔진 동작을 추가로 조정할 수 있습니다.

멤버 함수 문서

QQmlApplicationEngine::QQmlApplicationEngine(QObject *parent = nullptr)

주어진 parent 을 사용하여 새 QQmlApplicationEngine을 만듭니다. 나중에 QML 파일을 로드하려면 load()를 호출해야 합니다.

QQmlApplicationEngine::QQmlApplicationEngine(const QString &filePath, QObject *parent = nullptr)

새 QQmlApplicationEngine을 생성하고 지정된 filePath 에서 QML 파일을 로드합니다(로컬 파일 또는 qrc 경로여야 함). 상대 경로를 지정하면 애플리케이션의 작업 디렉터리에 상대적인 것으로 해석됩니다.

이는 편의상 제공되는 것으로, 빈 생성자를 사용하고 나중에 load를 호출하는 것과 동일합니다.

QQmlApplicationEngine::QQmlApplicationEngine(const QUrl &url, QObject *parent = nullptr)

새 QQmlApplicationEngine을 생성하고 지정된 url 에서 QML 파일을 로드합니다. 이는 편의상 제공되는 것으로, 빈 생성자를 사용하고 나중에 load를 호출하는 것과 동일합니다.

[explicit, since 6.5] QQmlApplicationEngine::QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent = nullptr)

새 QQmlApplicationEngine을 생성하고 uritypeName 에 지정된 QML 유형을 로드합니다. 이것은 편의상 제공되며, 빈 생성자를 사용하고 나중에 loadFromModule 을 호출하는 것과 동일합니다.

이 함수는 Qt 6.5에 도입되었습니다.

[override virtual noexcept] QQmlApplicationEngine::~QQmlApplicationEngine()

QQmlApplicationEngine 및 로드된 모든 QML 객체를 삭제합니다.

[slot] void QQmlApplicationEngine::load(const QString &filePath)

filePath 에 있는 루트 QML 파일을 로드합니다. filePath 은 로컬 파일의 경로이거나 리소스 파일 시스템에 있는 파일의 경로여야 합니다. filePath 이 상대 경로인 경우 애플리케이션의 작업 디렉터리에 대한 상대 경로로 간주됩니다. 파일로 정의된 객체 트리는 즉시 인스턴스화됩니다.

오류가 발생하면 qWarning 와 함께 오류 메시지가 인쇄됩니다.

[slot] void QQmlApplicationEngine::load(const QUrl &url)

url 에 있는 루트 QML 파일을 로드합니다. 파일에 정의된 개체 트리가 로컬 파일 URL에 대해 즉시 생성됩니다. 원격 URL은 비동기적으로 로드되며 objectCreated 신호를 수신하여 개체 트리가 준비되었는지 확인합니다.

오류가 발생하면 null 포인터를 매개변수로 하여 objectCreated 신호가 전송되고 qWarning 으로 오류 메시지가 인쇄됩니다.

[slot] void QQmlApplicationEngine::loadData(const QByteArray &data, const QUrl &url = QUrl())

data 에 지정된 QML을 로드합니다. data 에 정의된 객체 트리가 즉시 인스턴스화됩니다.

url 을 지정하면 컴포넌트의 기본 URL로 사용됩니다. 이는 데이터 및 오류 메시지 내의 상대 경로에 영향을 줍니다.

오류가 발생하면 오류 메시지가 qWarning 로 인쇄됩니다.

[slot, since 6.5] void QQmlApplicationEngine::loadFromModule(QAnyStringView uri, QAnyStringView typeName)

uri 에서 지정한 모듈에서 QML 유형 typeName 을 로드합니다. 유형이 원격 URL에 있는 QML 파일에서 시작된 경우 유형은 비동기적으로 로드됩니다. objectCreated 신호를 수신하여 객체 트리가 준비되었는지 확인합니다.

오류가 발생하면 null 포인터를 매개변수로 하여 objectCreated 신호가 전송되고 qWarning 으로 오류 메시지가 인쇄됩니다.

QQmlApplicationEngine engine;
engine.loadFromModule("QtQuick", "Rectangle");

참고: uri 로 식별된 모듈은 QML 파일 내에서 import uri 을 수행하는 것과 같은 방식으로 가져오기 경로에서 검색됩니다. 모듈을 찾을 수 없는 경우 이 함수는 실패합니다.

이 기능은 Qt 6.5에 도입되었습니다.

QQmlComponent::loadFromModule참조하십시오 .

[signal] void QQmlApplicationEngine::objectCreated(QObject *object, const QUrl &url)

이 신호는 객체 로드가 완료되면 발생합니다. 로딩에 성공하면 object 에는 로드된 객체에 대한 포인터가 포함되며, 그렇지 않으면 포인터는 NULL입니다.

object 의 출처가 된 컴포넌트에 대한 url 도 제공됩니다.

참고: 컴포넌트의 경로가 상대 경로를 포함하는 QString 로 제공된 경우 url 에는 파일의 완전히 확인된 경로가 포함됩니다.

[signal, since 6.4] void QQmlApplicationEngine::objectCreationFailed(const QUrl &url)

이 신호는 오류가 발생하여 로딩이 완료되면 발생합니다.

로드에 실패한 컴포넌트에 대한 url 주소가 인자로 제공됩니다.

QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;

// exit on error
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
    &app, []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection);
engine.load(QUrl());
return app.exec();

참고: 컴포넌트의 경로가 상대 경로를 포함하는 QString 로 제공된 경우 url 에는 파일의 완전히 확인된 경로가 포함됩니다.

이 신호와 함께 (생성에 실패했더라도) QQmlApplicationEngine::objectCreated 도 함께 전송됩니다.

이 함수는 Qt 6.4에 도입되었습니다.

QList<QObject *> QQmlApplicationEngine::rootObjects() const

QQmlApplicationEngine 에 의해 인스턴스화된 모든 루트 객체의 목록을 반환합니다. 여기에는 load() 또는 편의 생성자를 통해 로드된 객체만 포함됩니다.

참고: 5.9 이전 Qt 버전에서, 이 함수는const 로 표시되지 않습니다.

[slot, since 6.0] void QQmlApplicationEngine::setExtraFileSelectors(const QStringList &extraFileSelectors)

로컬 파일에 대한 URL 확인에 사용되는 내부 QQmlFileSelector 에 전달할 extraFileSelectors 을 설정합니다. extraFileSelectors 은 첫 번째 QML 파일이 로드될 때 적용됩니다. 그 이후에 설정하면 효과가 없습니다.

이 함수는 Qt 6.0에 도입되었습니다.

QQmlFileSelectorQFileSelector::setExtraSelectors참조하십시오 .

[slot] void QQmlApplicationEngine::setInitialProperties(const QVariantMap &initialProperties)

QML 컴포넌트가 로드된 후 초기화되는 initialProperties 을 설정합니다.

QQmlApplicationEngine engine;

EventDatabase eventDatabase;
EventMonitor eventMonitor;

engine.setInitialProperties({
    { "eventDatabase", QVariant::fromValue(&eventDatabase) },
    { "eventMonitor", QVariant::fromValue(&eventMonitor) }
});

QQmlComponent::setInitialProperties, QQmlApplicationEngine::load, QQmlApplicationEngine::loadData도 참조하세요 .

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