QPluginLoader Class

QPluginLoader 클래스는 런타임에 플러그인을 로드합니다. 더 보기...

헤더: #include <QPluginLoader>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QObject

참고: 이 클래스의 모든 함수는 재진입합니다.

속성

공용 함수

QPluginLoader(QObject *parent = nullptr)
QPluginLoader(const QString &fileName, QObject *parent = nullptr)
virtual ~QPluginLoader()
QString errorString() const
QString fileName() const
QObject *instance()
bool isLoaded() const
bool load()
QLibrary::LoadHints loadHints() const
QJsonObject metaData() const
void setFileName(const QString &fileName)
void setLoadHints(QLibrary::LoadHints loadHints)
bool unload()

정적 공개 회원

QObjectList staticInstances()
QList<QStaticPlugin> staticPlugins()
void qRegisterStaticPluginFunction(QStaticPlugin plugin)

상세 설명

QPluginLoader는 Qt 플러그인에 대한 액세스를 제공합니다. Qt 플러그인은 공유 라이브러리(DLL)에 저장되며 QLibrary 를 사용하여 액세스하는 공유 라이브러리에 비해 이러한 이점을 제공합니다:

  • QPluginLoader는 플러그인이 애플리케이션과 동일한 버전의 Qt에 링크되어 있는지 확인합니다.
  • QPluginLoader는 C 함수를 수동으로 확인하는 대신 루트 컴포넌트 객체(instance())에 직접 액세스할 수 있습니다.

QPluginLoader 객체의 인스턴스는 플러그인이라고 부르는 단일 공유 라이브러리 파일에서 작동합니다. 이는 플랫폼에 독립적인 방식으로 플러그인의 기능에 대한 액세스를 제공합니다. 로드할 플러그인을 지정하려면 생성자에서 파일 이름을 전달하거나 setFileName()로 설정합니다.

가장 중요한 함수는 플러그인 파일을 동적으로 로드하는 load(), 로드가 성공했는지 확인하는 isLoaded(), 플러그인의 루트 컴포넌트에 액세스하는 instance()입니다. instance () 함수는 플러그인이 아직 로드되지 않은 경우 암시적으로 로드를 시도합니다. 동일한 물리적 플러그인에 액세스하기 위해 QPluginLoader의 여러 인스턴스를 사용할 수 있습니다.

일단 로드된 플러그인은 QPluginLoader의 모든 인스턴스가 언로드될 때까지 또는 애플리케이션이 종료될 때까지 메모리에 남아 있습니다. unload ()를 사용하여 플러그인 언로드를 시도할 수 있지만, QPluginLoader의 다른 인스턴스가 동일한 라이브러리를 사용하고 있는 경우 호출이 실패하고 모든 인스턴스가 unload()를 호출한 경우에만 언로드가 수행됩니다. 언로드가 발생하기 직전에 루트 컴포넌트도 삭제됩니다.

플러그인을 통해 애플리케이션을 확장 가능하게 만드는 방법에 대한 자세한 내용은 Qt 플러그인 생성 방법을 참조하십시오.

애플리케이션이 Qt에 대해 정적으로 링크되어 있는 경우 QPluginLoader를 사용할 수 없습니다. 이 경우 플러그인에 정적으로 링크해야 합니다. 정적으로 링크된 애플리케이션에서 동적 라이브러리를 로드해야 하는 경우 QLibrary 을 사용할 수 있습니다.

QLibrary참조하세요 .

속성 문서

fileName : QString

이 속성은 플러그인의 파일 이름을 보유합니다.

QPluginLoader 은 적절한 접미사가 있는 파일을 자동으로 검색하므로 파일 이름에서 파일 접미사를 생략하는 것이 좋습니다( QLibrary::isLibrary() 참조).

플러그인을 로드할 때 QPluginLoader 는 파일 이름에 절대 경로가 없는 한 QCoreApplication::libraryPaths()로 지정된 모든 플러그인 위치에서 검색합니다. 플러그인을 성공적으로 로드한 후 fileName()은 생성자에서 제공되었거나 setFileName()에 전달된 경우 플러그인의 전체 경로를 포함하여 플러그인의 정규화된 파일 이름을 반환합니다.

파일 이름이 존재하지 않으면 설정되지 않습니다. 그러면 이 프로퍼티에는 빈 문자열이 포함됩니다.

기본적으로 이 속성에는 빈 문자열이 포함됩니다.

함수에 액세스합니다:

QString fileName() const
void setFileName(const QString &fileName)

load()도 참조하세요 .

loadHints : QLibrary::LoadHints

load() 함수에 동작 방식에 대한 힌트를 제공하세요.

플러그인의 기호가 어떻게 해결되는지에 대한 힌트를 제공할 수 있습니다. Qt 5.7부터는 기본적으로 QLibrary::PreventUnloadHint 가 설정되어 있습니다.

이 속성의 작동 방식에 대한 자세한 설명은 QLibrary::loadHints 문서를 참조하세요.

함수 액세스:

QLibrary::LoadHints loadHints() const
void setLoadHints(QLibrary::LoadHints loadHints)

QLibrary::loadHints참조하세요 .

멤버 함수 문서

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

주어진 parent 으로 플러그인 로더를 생성합니다.

[explicit] QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent = nullptr)

fileName 에 지정된 플러그인을 로드하는 parent 로 플러그인 로더를 생성합니다.

로드 가능하려면 파일의 접미사가 플랫폼에 따라 로드 가능한 라이브러리에 유효한 접미사여야 합니다(예: Unix의 경우 .so, - macOS 및 iOS의 경우 .dylib, Windows의 경우 .dll ). 접미사는 QLibrary::isLibrary()로 확인할 수 있습니다.

setFileName()도 참조하세요 .

[virtual noexcept] QPluginLoader::~QPluginLoader()

QPluginLoader 객체를 삭제합니다.

unload()가 명시적으로 호출되지 않는 한 플러그인은 애플리케이션이 종료될 때까지 메모리에 남아 있습니다.

isLoaded() 및 unload()도 참조하세요 .

QString QPluginLoader::errorString() const

마지막으로 발생한 오류에 대한 설명이 포함된 텍스트 문자열을 반환합니다.

QObject *QPluginLoader::instance()

플러그인의 루트 컴포넌트 객체를 반환합니다. 필요한 경우 플러그인이 로드됩니다. 플러그인을 로드할 수 없거나 루트 컴포넌트 객체를 인스턴스화할 수 없는 경우 nullptr 함수를 반환합니다.

루트 컴포넌트 객체가 소멸된 경우 이 함수를 호출하면 새 인스턴스가 생성됩니다.

이 함수가 반환하는 루트 컴포넌트는 QPluginLoader 사이트가 삭제되어도 삭제되지 않습니다. 루트 컴포넌트가 삭제되었는지 확인하려면 더 이상 핵심 컴포넌트에 액세스할 필요가 없는 즉시 unload()를 호출해야 합니다. 라이브러리가 최종적으로 언로드되면 루트 컴포넌트는 자동으로 삭제됩니다.

컴포넌트 객체는 QObject. 관심 있는 인터페이스에 액세스하려면 qobject_cast()를 사용합니다.

load()도 참조하세요 .

bool QPluginLoader::isLoaded() const

플러그인이 로드되면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

load()도 참조하세요 .

bool QPluginLoader::load()

플러그인을 로드하고 플러그인이 성공적으로 로드된 경우 true 을 반환하고 그렇지 않으면 false 을 반환합니다. instance ()는 항상 기호를 확인하기 전에 이 함수를 호출하므로 명시적으로 호출할 필요는 없습니다. 어떤 상황에서는 플러그인을 미리 로드하고 싶을 수 있으며, 이 경우 이 함수를 사용할 수 있습니다.

unload()도 참조하세요 .

QJsonObject QPluginLoader::metaData() const

이 플러그인의 메타 데이터를 반환합니다. 메타 데이터는 플러그인을 컴파일할 때 Q_PLUGIN_METADATA() 매크로를 사용하여 json 형식으로 지정한 데이터입니다.

메타 데이터는 플러그인을 실제로 로드하지 않고도 빠르고 저렴한 방법으로 쿼리할 수 있습니다. 이를 통해 예를 들어 플러그인의 기능을 저장하고 이 메타 데이터에 따라 플러그인을 로드할지 여부를 결정할 수 있습니다.

[static] QObjectList QPluginLoader::staticInstances()

플러그인 로더가 보유한 정적 플러그인 인스턴스(루트 컴포넌트)의 목록을 반환합니다.

staticPlugins()도 참조하세요 .

[static] QList<QStaticPlugin> QPluginLoader::staticPlugins()

플러그인 로더가 보유한 QStaticPlugins 목록을 반환합니다. 이 함수는 staticInstances()와 유사하지만 QStaticPlugin 에 메타 데이터 정보도 포함된다는 점이 다릅니다.

staticInstances()도 참조하세요 .

bool QPluginLoader::unload()

플러그인을 언로드할 수 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

이 함수는 애플리케이션 종료 시 자동으로 수행되므로 일반적으로 이 함수를 호출할 필요가 없습니다.

QPluginLoader 의 다른 인스턴스가 동일한 플러그인을 사용하는 경우 호출이 실패하고 모든 인스턴스가 unload()를 호출한 경우에만 언로드가 수행됩니다.

루트 컴포넌트를 삭제하려고 하지 마세요. 대신 필요할 때 unload()가 자동으로 삭제할 것이라는 점을 믿으세요.

instance() 및 load()도 참조하세요 .

관련 비회원

void qRegisterStaticPluginFunction(QStaticPlugin plugin)

플러그인 로더에 지정된 plugin 을 등록하고 Q_IMPORT_PLUGIN()에서 사용합니다.

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