QQmlEngine Class

QQmlEngine 클래스는 QML 컴포넌트를 인스턴스화하기 위한 환경을 제공합니다. 더 보기...

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

QQmlApplicationEngine

속성

공용 기능

QQmlEngine(QObject *parent = nullptr)
virtual ~QQmlEngine() override
void addImageProvider(const QString &providerId, QQmlImageProviderBase *provider)
void addImportPath(const QString &path)
void addPluginPath(const QString &path)
void addUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor)
QUrl baseUrl() const
void clearComponentCache()
void clearSingletons()
QQmlImageProviderBase *imageProvider(const QString &providerId) const
QStringList importPathList() const
QQmlIncubationController *incubationController() const
QUrl interceptUrl(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) const
(since 6.6) void markCurrentFunctionAsTranslationBinding()
QNetworkAccessManager *networkAccessManager() const
QQmlNetworkAccessManagerFactory *networkAccessManagerFactory() const
QString offlineStorageDatabaseFilePath(const QString &databaseName) const
QString offlineStoragePath() const
bool outputWarningsToStandardError() const
QStringList pluginPathList() const
void removeImageProvider(const QString &providerId)
void removeUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor)
QQmlContext *rootContext() const
void setBaseUrl(const QUrl &url)
void setImportPathList(const QStringList &paths)
void setIncubationController(QQmlIncubationController *controller)
void setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory *factory)
void setOfflineStoragePath(const QString &dir)
void setOutputWarningsToStandardError(bool enabled)
void setPluginPathList(const QStringList &paths)
T singletonInstance(int qmlTypeId)
(since 6.5) T singletonInstance(QAnyStringView uri, QAnyStringView typeName)
void trimComponentCache()
QList<QQmlAbstractUrlInterceptor *> urlInterceptors() const

공용 슬롯

void retranslate()

신호

void exit(int retCode)
(since 6.5) void offlineStoragePathChanged()
void quit()
void warnings(const QList<QQmlError> &warnings)

정적 공용 멤버

QQmlContext *contextForObject(const QObject *object)
void setContextForObject(QObject *object, QQmlContext *context)

재구현된 보호 함수

virtual bool event(QEvent *e) override
QQmlContext *qmlContext(const QObject *object)
QQmlEngine *qmlEngine(const QObject *object)

매크로

QML_NAMESPACE_EXTENDED(EXTENSION_NAMESPACE)

상세 설명

QQmlEngine은 components 및 그로부터 생성된 객체를 관리하고 바인딩 및 함수를 실행하는 데 사용됩니다. 또한 QQmlEngine은 QJSEngine 에서 상속되어 QML 컴포넌트와 JavaScript 코드 간의 원활한 통합을 가능하게 합니다.

각 QML 컴포넌트는 QQmlContext 에서 인스턴스화됩니다. QML에서 컨텍스트는 계층적으로 배열되며 이 계층 구조는 QQmlEngine에 의해 관리됩니다. 기본적으로 컴포넌트는 root context 에 인스턴스화됩니다.

QQmlComponent, QQmlContext, QML 글로벌 객체QQmlApplicationEngine참조하십시오 .

속성 문서

offlineStoragePath : QString

이 속성은 오프라인 사용자 데이터를 저장하는 디렉터리를 보유합니다.

SQL 및 기타 오프라인 저장소가 있는 디렉터리를 반환합니다.

openDatabaseSync() 로 생성된 SQL 데이터베이스는 여기에 저장됩니다.

기본값은 플랫폼 표준 사용자 애플리케이션 데이터 디렉터리의 QML/OfflineStorage입니다.

이 경로가 현재 파일 시스템에 존재하지 않을 수 있으므로 이 위치에 새 파일을 만들려는 호출자는 먼저 QDir::mkpath()를 참조하세요.

액세스 기능:

QString offlineStoragePath() const
void setOfflineStoragePath(const QString &dir)

알림 신호:

참고 Qt Quick Local Storage QML Types.

멤버 함수 문서

[explicit] QQmlEngine::QQmlEngine(QObject *parent = nullptr)

주어진 parent 을 사용하여 새 QQmlEngine을 생성합니다.

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

QQmlEngine 을 파괴합니다.

이 엔진에서 생성된 모든 QQmlContext 은 무효화되지만 파괴되지는 않습니다( QQmlEngine 객체에 부모가 없는 경우).

JS 엔진 정리에 대한 자세한 내용은QJSEngine()를 참조하세요.

void QQmlEngine::addImageProvider(const QString &providerId, QQmlImageProviderBase *provider)

이미지: url 스키마를 통해 요청된 이미지에 사용할 provider 을 설정하고 호스트는 providerId 입니다. QQmlEngineprovider 의 소유권을 갖습니다.

이미지 공급자는 픽셀맵 및 스레드 이미지 요청을 지원할 수 있습니다. 이미지 제공업체 구현 및 사용에 대한 자세한 내용은 QQuickImageProvider 문서를 참조하세요.

모든 필수 이미지 공급자는 QML 소스 파일을 로드하기 전에 엔진에 추가해야 합니다.

removeImageProvider(), QQuickImageProvider, 및 QQmlImageProviderBase참조하세요 .

void QQmlEngine::addImportPath(const QString &path)

엔진이 URL 기반 디렉토리 구조에서 설치된 모듈을 검색하는 디렉터리로 path 을 추가합니다.

path 은 로컬 파일 시스템 디렉터리, Qt 리소스 경로(:/imports), Qt 리소스 URL(qrc:/imports) 또는 URL일 수 있습니다.

path 은 가져오기 경로 목록에 추가되기 전에 표준 형식으로 변환됩니다.

새로 추가된 pathimportPathList()의 첫 번째가 됩니다.

setImportPathList(), QML 모듈QML 가져오기 경로도참조하십시오.

void QQmlEngine::addPluginPath(const QString &path)

엔진이 가져온 모듈( qmldir 파일에서 참조)에 대한 네이티브 플러그인을 검색하는 디렉터리로 path 을 추가합니다.

기본적으로 목록에는 ., 즉 엔진이 qmldir 파일 자체의 디렉터리에서 검색하는 디렉터리만 포함됩니다.

새로 추가된 pathpluginPathList()에서 가장 먼저 검색됩니다.

setPluginPathList()도 참조하세요 .

void QQmlEngine::addUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor)

QML에서 URL을 확인할 때 사용할 urlInterceptor 을 추가합니다. 이는 스크립트 파일 및 QML 유형을 로드하는 데 사용되는 URL에도 적용됩니다. 엔진이 파일을 로드하는 동안 URL 인터셉터를 수정해서는 안 되며, 그렇지 않으면 URL 선택이 일관되지 않을 수 있습니다. 여러 URL 인터셉터가 주어진 경우 각 URL에 대해 추가된 순서대로 호출됩니다.

QQmlEngine 인터셉터에 대한 소유권을 가져가지 않으며 삭제하지 않습니다.

QUrl QQmlEngine::baseUrl() const

이 엔진의 기본 URL을 반환합니다. 기본 URL은 QQmlComponent 생성자에 상대 URL이 전달될 때만 컴포넌트를 확인하는 데 사용됩니다.

기본 URL이 명시적으로 설정되지 않은 경우 이 메서드는 애플리케이션의 현재 작업 디렉터리를 반환합니다.

setBaseUrl()도 참조하세요 .

void QQmlEngine::clearComponentCache()

엔진의 내부 컴포넌트 캐시를 지웁니다.

이 함수는 엔진이 이전에 로드한 대부분의 컴포넌트의 프로퍼티 메타데이터를 삭제합니다. 엔진의 컴포넌트 캐시에서 참조되지 않은 컴포넌트를 삭제하는 방식으로 이루어집니다. 아직 참조 중인 컴포넌트는 삭제하지 않는데, 이는 나중에 크래시가 발생할 가능성이 높기 때문입니다.

참조된 컴포넌트가 없는 경우 이 함수는 엔진을 로드된 컴포넌트 데이터가 없는 상태로 반환합니다. 이는 이전 컴포넌트 세트의 작은 하위 집합을 다시 로드하거나 이전에 로드된 컴포넌트의 새 버전을 로드할 때 유용할 수 있습니다.

컴포넌트 캐시가 지워지면 새 객체를 생성하기 전에 컴포넌트를 로드해야 합니다.

참고: 컴포넌트 캐시를 지워도 QML 컴포넌트에서 생성된 기존 객체는 해당 유형을 유지합니다. 여기에는 싱글톤 객체가 포함됩니다. 캐시를 지운 후 동일한 QML 코드에서 더 많은 객체를 만들면 새 객체는 이전 객체와 다른 유형이 됩니다. 이러한 새 객체를 캐시를 지우기 전에 생성된 객체에 속하는 선언된 유형의 프로퍼티에 할당하면 작동하지 않습니다.

일반적으로 컴포넌트 캐시를 지울 때 QML 컴포넌트에서 생성된 객체가 남아 있지 않은지 확인하세요.

trimComponentCache() 및 clearSingletons()도 참조하세요 .

void QQmlEngine::clearSingletons()

엔진이 소유한 모든 싱글톤을 지웁니다.

이 함수는 모든 싱글톤 인스턴스를 삭제하여 그 중 엔진이 소유한 모든 QObject를 삭제합니다. 이 함수는 clearComponentCache()를 호출하기 전에 QML로 생성된 객체가 남지 않도록 하는 데 유용합니다.

QObject-기반 싱글톤 인스턴스를 보유한 QML 프로퍼티는 엔진이 싱글톤을 소유한 경우 null이 되고, 엔진이 소유하지 않은 경우 값을 유지합니다. 싱글톤은 기존 QML로 생성된 객체에 액세스하여 자동으로 다시 생성되지 않습니다. 새 컴포넌트가 인스턴스화될 때만 싱글톤이 다시 생성됩니다.

clearComponentCache()도 참조하세요 .

[static] QQmlContext *QQmlEngine::contextForObject(const QObject *object)

object 에 대해 QQmlContext 을 반환하거나 컨텍스트가 설정되지 않은 경우 nullptr을 반환합니다.

QQmlEngineQObject 을 인스턴스화하면 내부 컨텍스트가 자동으로 할당됩니다. 이러한 내부 컨텍스트는 읽기 전용입니다. 컨텍스트 속성을 설정할 수 없습니다.

setContextForObject(), qmlContext(), qmlEngine() 및 QQmlContext::setContextProperty()도 참조하세요 .

[override virtual protected] bool QQmlEngine::event(QEvent *e)

다시 구현합니다: QObject::event(QEvent *e).

[signal] void QQmlEngine::exit(int retCode)

이 신호는 엔진에서 로드한 QML이 지정된 반환 코드를 사용하여 이벤트 루프에서 종료하고자 할 때 발생합니다 retCode.

quit()도 참조하세요 .

QQmlImageProviderBase *QQmlEngine::imageProvider(const QString &providerId) const

providerId 에 설정된 이미지 공급자를 찾으면 반환하고, 그렇지 않으면 nullptr 을 반환합니다.

QQuickImageProvider참조하세요 .

QStringList QQmlEngine::importPathList() const

엔진이 URL 기반 디렉토리 구조에서 설치된 모듈을 검색하는 디렉터리 목록을 반환합니다.

예를 들어 /opt/MyApp/lib/imports 경로에 com.mycompany.Feature 이 있는 경우 을 임포트하는 QML은 QQmlEngine 에서 해당 모듈이 제공하는 컴포넌트를 /opt/MyApp/lib/imports/com/mycompany/Feature/ 에서 찾게 됩니다. qmldir 파일은 유형 버전 매핑 및 QML 확장 플러그인을 정의하는 데 필요합니다.

기본적으로 이 목록에는 QML 가져오기 경로에 언급된 경로가 포함됩니다.

addImportPath() 및 setImportPathList()도 참조하세요 .

QQmlIncubationController *QQmlEngine::incubationController() const

현재 설정된 인큐베이션 컨트롤러를 반환하거나 컨트롤러가 설정되지 않은 경우 0을 반환합니다.

setIncubationController()도 참조하세요 .

QUrl QQmlEngine::interceptUrl(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) const

주어진 type 의 주어진 url 에서 현재 URL 인터셉터를 실행하고 결과를 반환합니다.

[since 6.6] void QQmlEngine::markCurrentFunctionAsTranslationBinding()

이 메서드가 QML에서 바인딩의 일부인 함수 내부에서 호출되면 바인딩은 번역 바인딩으로 처리됩니다.

class I18nAwareClass : public QObject {

  //...

   QString text() const
   {
        if (auto engine = qmlEngine(this))
            engine->markCurrentFunctionAsTranslationBinding();
        return tr("Hello, world!");
   }
};

참고: 이 함수는 qsTr 함수에 대한 자체 대안을 제공하려는 경우에 주로 유용합니다. 언어 변경 시 C++ 클래스에서 노출된 프로퍼티가 업데이트되도록 하려면 LanguageChange 이벤트에 반응하는 것이 좋습니다. 이는 클래스가 QML이 아닌 컨텍스트에서 사용되는 경우에도 작동하는 보다 일반적인 메커니즘이며 오버헤드가 약간 적습니다. 그러나 클래스가 이미 QML 엔진에 밀접하게 연결되어 있는 경우에는 markCurrentFunctionAsTranslationBinding 을 사용하는 것도 허용될 수 있습니다. 자세한 내용은 동적 언어 변경에 대비하기를 참조하십시오.

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

QQmlEngine::retranslate참조하십시오 .

QNetworkAccessManager *QQmlEngine::networkAccessManager() const

이 엔진에 의해 인스턴스화된 모든 QML 유형에서 사용할 수 있는 일반적인 QNetworkAccessManager 을 반환합니다.

QQmlNetworkAccessManagerFactory 가 설정되어 있고 QNetworkAccessManager 가 아직 생성되지 않은 경우 QQmlNetworkAccessManagerFactory 를 사용하여 QNetworkAccessManager 를 생성하고, 그렇지 않으면 반환된 QNetworkAccessManager 에는 프록시나 캐시가 설정되어 있지 않습니다.

setNetworkAccessManagerFactory()도 참조하세요 .

QQmlNetworkAccessManagerFactory *QQmlEngine::networkAccessManagerFactory() const

현재 QQmlNetworkAccessManagerFactory 를 반환합니다.

setNetworkAccessManagerFactory()도 참조하세요 .

QString QQmlEngine::offlineStorageDatabaseFilePath(const QString &databaseName) const

식별자가 databaseNameLocal Storage 데이터베이스가 있는(또는 있을) 파일 경로를 반환합니다.

LocalStorage.openDatabaseSync()도 참조하세요 .

[signal, since 6.5] void QQmlEngine::offlineStoragePathChanged()

이 신호는 offlineStoragePath 변경 시 발생합니다.

참고: offlineStoragePath 속성에 대한 알림 신호.

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

bool QQmlEngine::outputWarningsToStandardError() const

warnings() 신호에 의해 출력되는 것 외에 경고 메시지가 stderr에 출력되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

기본값은 참입니다.

setOutputWarningsToStandardError()도 참조하세요 .

QStringList QQmlEngine::pluginPathList() const

엔진이 가져온 모듈의 네이티브 플러그인을 검색하는 디렉터리 목록을 반환합니다( qmldir 파일에서 참조).

기본적으로 이 목록에는 ., 즉 엔진이 qmldir 파일 자체의 디렉터리에서 검색하는 디렉터리만 포함됩니다.

addPluginPath() 및 setPluginPathList()도 참조하세요 .

[signal] void QQmlEngine::quit()

이 신호는 엔진에 로드된 QML이 종료하고자 할 때 발생합니다.

exit()도 참조하세요 .

void QQmlEngine::removeImageProvider(const QString &providerId)

providerId 에 대한 이미지 공급자를 제거합니다.

addImageProvider() 및 QQuickImageProvider도 참조하세요 .

void QQmlEngine::removeUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor)

addUrlInterceptor 을 사용하여 이전에 추가한 urlInterceptor 을 제거합니다. 엔진이 파일을 로드하는 동안 URL 인터셉터를 수정해서는 안 되며, 그렇지 않으면 URL 선택이 일관되지 않을 수 있습니다.

이렇게 하면 인터셉터가 삭제되는 것이 아니라 엔진에서 제거될 뿐입니다. 나중에 같은 엔진이나 다른 엔진에서 다시 사용할 수 있습니다.

[slot] void QQmlEngine::retranslate()

번역용으로 표시된 문자열을 사용하는 모든 바인딩 표현식을 새로 고칩니다.

QCoreApplication::installTranslator 을 사용하여 새 번역기를 설치한 후 이 함수를 호출하면 사용자 인터페이스에 최신 번역이 표시되도록 할 수 있습니다.

QQmlContext *QQmlEngine::rootContext() const

엔진의 루트 컨텍스트를 반환합니다.

루트 컨텍스트는 QQmlEngine 에 의해 자동으로 생성됩니다. 엔진에 의해 인스턴스화된 모든 QML 컴포넌트 인스턴스에서 사용할 수 있어야 하는 데이터는 루트 컨텍스트에 넣어야 합니다.

컴포넌트 인스턴스의 하위 집합에서만 사용할 수 있어야 하는 추가 데이터는 루트 컨텍스트에 부모를 둔 하위 컨텍스트에 추가해야 합니다.

void QQmlEngine::setBaseUrl(const QUrl &url)

이 엔진의 기본 URL을 url 으로 설정합니다.

baseUrl()도 참조하세요 .

[static] void QQmlEngine::setContextForObject(QObject *object, QQmlContext *context)

object 에 대한 QQmlContextcontext 로 설정합니다. object 에 이미 컨텍스트가 있는 경우 경고가 출력되지만 컨텍스트는 변경되지 않습니다.

QQmlEngineQObject 을 인스턴스화하면 컨텍스트가 자동으로 설정됩니다.

contextForObject()도 참조하세요 .

void QQmlEngine::setImportPathList(const QStringList &paths)

엔진이 URL 기반 디렉토리 구조에서 설치된 모듈을 검색할 디렉터리 목록으로 paths 을 설정합니다.

기본적으로 이 목록에는 QML 가져오기 경로에 언급된 경로가 포함됩니다.

경고: setImportPathList를 호출해도 기본 가져오기 경로는 유지되지 않습니다.

importPathList() 및 addImportPath()도 참조하세요 .

void QQmlEngine::setIncubationController(QQmlIncubationController *controller)

엔진의 인큐베이션을 설정합니다 controller. 엔진은 활성 컨트롤러를 하나만 가질 수 있으며 소유권을 가지지 않습니다.

incubationController()도 참조하세요 .

void QQmlEngine::setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory *factory)

QNetworkAccessManager(들)을 만드는 데 사용할 factory 을 설정합니다.

QNetworkAccessManager 는 QML의 모든 네트워크 액세스에 사용됩니다. 팩토리를 구현하면 특수 캐싱, 프록시 및 쿠키를 지원하는 사용자 지정 QNetworkAccessManager 을 생성할 수 있습니다.

엔진을 실행하기 전에 팩토리를 설정해야 합니다.

참고: QQmlEngine 은 팩토리의 소유권을 갖지 않습니다.

networkAccessManagerFactory()도 참조하세요 .

void QQmlEngine::setOutputWarningsToStandardError(bool enabled)

경고 메시지를 enabled 으로 출력할지 여부를 설정합니다.

enabled 이 참이면 QML에서 생성된 모든 경고 메시지가 stderr로 출력되고 warnings() 신호로 전송됩니다. enabled 이 거짓이면 warnings() 신호만 방출됩니다. 이를 통해 애플리케이션이 경고 출력을 직접 처리할 수 있습니다.

기본값은 참입니다.

outputWarningsToStandardError()도 참조하세요 .

void QQmlEngine::setPluginPathList(const QStringList &paths)

엔진이 가져온 모듈( qmldir 파일에서 참조)에 대한 네이티브 플러그인을 검색하는 디렉터리 목록을 paths 으로 설정합니다.

기본적으로 목록에는 ., 즉 엔진이 qmldir 파일 자체의 디렉터리에서 검색하는 디렉터리만 포함됩니다.

pluginPathList() 및 addPluginPath()도 참조하세요 .

template <typename T> T QQmlEngine::singletonInstance(int qmlTypeId)

qmlTypeId 에 등록된 싱글톤 타입의 인스턴스를 반환합니다.

템플릿 인자 T는 QJSValue 또는 QObject 파생 유형에 대한 포인터일 수 있으며 싱글톤이 어떻게 등록되었는지에 따라 달라집니다. T의 인스턴스가 아직 생성되지 않은 경우 지금 생성됩니다. qmlTypeId 이 유효한 싱글톤 유형을 나타내지 않으면 기본으로 구성된 QJSValue 또는 nullptr 이 반환됩니다.

QObject* 예시:

class MySingleton : public QObject {
    Q_OBJECT

    // Register as default constructed singleton.
    QML_ELEMENT
    QML_SINGLETON

    static int typeId;
    // ...
};

    MySingleton::typeId = qmlTypeId(...);

    // Retrieve as QObject*
    QQmlEngine engine;
    MySingleton* instance = engine.singletonInstance<MySingleton*>(MySingleton::typeId);

QJSValue 예시:

    // Register with QJSValue callback
    int typeId = qmlRegisterSingletonType(...);

    // Retrieve as QJSValue
    QQmlEngine engine;
    QJSValue instance = engine.singletonInstance<QJSValue>(typeId);

예를 들어 싱글톤 클래스의 정적 멤버로 QML 유형 ID를 저장하는 것이 좋습니다. qmlTypeId ()를 통한 조회는 비용이 많이 듭니다.

QML_SINGLETON, qmlRegisterSingletonType() 및 qmlTypeId()도 참조하세요 .

[since 6.5] template <typename T> T QQmlEngine::singletonInstance(QAnyStringView uri, QAnyStringView typeName)

이 함수는 오버로드된 함수입니다.

uri 에 지정된 모듈에서 typeName 라는 이름의 싱글톤 유형의 인스턴스를 반환합니다.

이 메서드는 qmlTypeId 를 호출한 후 singletonInstance의 ID 기반 오버로드를 호출하는 대신 사용할 수 있습니다. 이는 싱글톤을 한 번만 설정해야 할 때 편리하며, 싱글톤에 반복적으로 액세스해야 하는 경우 typeId를 캐싱하면 type-id based overload 을 통해 더 빠르게 후속 액세스를 수행할 수 있습니다.

템플릿 인자 T는 QJSValue 또는 QObject 파생 유형에 대한 포인터일 수 있으며, 싱글톤이 어떻게 등록되었는지에 따라 달라집니다. T의 인스턴스가 아직 생성되지 않은 경우 지금 생성됩니다. typeName 이 유효한 싱글톤 유형을 나타내지 않으면, 기본으로 구성된 QJSValue 또는 nullptr 이 반환됩니다.

    QQmlEngine engine;
    MySingleton *singleton = engine.singletonInstance<MySingleton *>("mymodule", "MySingleton");
/

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

QML_SINGLETON, qmlRegisterSingletonType() 및 qmlTypeId()도 참조하십시오 .

void QQmlEngine::trimComponentCache()

엔진의 내부 컴포넌트 캐시를 트림합니다.

이 함수는 현재 사용 중이 아닌 로드된 컴포넌트의 프로퍼티 메타데이터를 소멸시킵니다.

컴포넌트 자체의 인스턴스, 해당 컴포넌트를 사용하는 다른 컴포넌트의 인스턴스 또는 해당 컴포넌트에 의해 인스턴스화된 오브젝트가 있는 경우 컴포넌트는 사용 중인 것으로 간주됩니다.

clearComponentCache()도 참조하세요 .

QList<QQmlAbstractUrlInterceptor *> QQmlEngine::urlInterceptors() const

현재 활성화된 URL 인터셉터 목록을 반환합니다.

[signal] void QQmlEngine::warnings(const QList<QQmlError> &warnings)

이 신호는 QML에서 warnings 메시지가 생성될 때 방출됩니다.

관련 비회원

QQmlContext *qmlContext(const QObject *object)

object 과 연결된 QQmlContext 을 반환합니다(있는 경우). 이는 QQmlEngine::contextForObject(객체)와 동일합니다.

참고: 이 함수를 사용하려면 #include <QtQml> 을 추가하세요.

contextForObject() 및 qmlEngine()도 참조하세요 .

QQmlEngine *qmlEngine(const QObject *object)

object 과 연관된 QQmlEngine 을 반환합니다(있는 경우). 이는 QQmlEngine::contextForObject(object)->engine()과 동일하지만 더 효율적입니다.

참고: 이 함수를 사용하려면 #include <QtQml> 을 추가하세요.

contextForObject() 및 qmlContext()도 참조하세요 .

매크로 문서

QML_NAMESPACE_EXTENDED(EXTENSION_NAMESPACE)

QML_EXTENDED_NAMESPACE 와 동일한 방식으로 동작하지만 확장되는 것이 타입이 아니라 네임스페이스라는 차이점이 있습니다.

둘러싸는 네임스페이스가 EXTENSION_NAMESPACE 을 확장으로 사용하여 QML에서 추가 열거형을 제공한다고 선언합니다. 이는 확장된 네임스페이스가 QML_ELEMENT 또는 QML_NAMED_ELEMENT() 매크로를 사용하여 QML에 노출되는 경우에 적용됩니다. 이 기능이 작동하려면 열거형이 메타객체 시스템에 노출되어야 합니다.

예를 들어, 다음 C++ 코드에서,

namespace NS2 {
    Q_NAMESPACE

    enum class E2 { D = 3, E, F };
    Q_ENUM_NS(E2)
}

namespace NS1 {
    Q_NAMESPACE
    QML_ELEMENT

    enum class E1 { A, B, C };
    Q_ENUM_NS(E1)

    // Extends NS1 with NS2
    QML_NAMESPACE_EXTENDED(NS2)
}

네임스페이스 NS1NS2 로 확장되고 E2 열거형은 QML의 NS1 에서 사용할 수 있게 됩니다.

Item {
    Component.onCompleted: console.log(NS1.E1.A, NS1.E2.D)
}

참고: EXTENSION_NAMESPACEQObject 또는 QGadget일 수도 있습니다. 이 경우 메서드와 프로퍼티도 노출되는 QML_EXTENDED 와는 달리 열거형만 노출됩니다.

참고: EXTENSION_NAMESPACE 에는 메타개체가 있어야 합니다. 즉, Q_NAMESPACE 매크로를 포함하는 네임스페이스이거나 QObject/QGadget이어야 합니다.

참고: 이미 네임스페이스 안에 있는 경우에도 클래스 이름은 정규화된 이름이어야 합니다.

QML_EXTENDED_NAMESPACE(), QML_ELEMENT, QML_NAMED_ELEMENT(), QML_EXTENDED(), 확장 객체 등록하기, Q_ENUM, 및 Q_ENUM_NS참조하세요 .

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