<QtPlugin> - Defining Plugins
Macros¶
Macro Documentation
Q_DECLARE_INTERFACE(ClassName, Identifier)¶
이 매크로는 주어진 Identifier (문자열 리터럴)를 ClassName이라는 인터페이스 클래스에 연결합니다. 식별자는 고유해야합니다. 예를 들어:
#define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface/1.0"
Q_DECLARE_INTERFACE(BrushInterface, BrushInterface_iid)
Q_DECLARE_INTERFACE를 네임 스페이스에 선언 된 인터페이스 클래스와 함께 사용하려면 Q_DECLARE_INTERFACE가 네임 스페이스 안에 있지 않은지 확인해야합니다. 예를 들어:
namespace Foo
{
struct MyInterface { ... };
}
Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface")
Q_IMPORT_PLUGIN(PluginName)¶
이 매크로는 PluginName이라는 플러그인을 가져옵니다.이 플러그인은 Q_PLUGIN_METADATA()를 사용하여 플러그인의 메타 데이터를 선언하는 클래스의 이름과 일치합니다.
이 매크로를 응용 프로그램의 소스 코드에 삽입하면 정적 플러그인을 사용할 수 있습니다.
Example:
Q_IMPORT_PLUGIN(qjpeg)
응용 프로그램이 빌드 될 때 정적 플러그인도 링커에 포함되어야합니다. Qt의 미리 정의 된 플러그인의 경우 QTPLUGIN을 사용하여 필요한 플러그인을 빌드에 추가 할 수 있습니다. 예를 들어:
TEMPLATE = app
QTPLUGIN += qjpeg qgif # image formats
Q_PLUGIN_METADATA( ...)¶
이 매크로는이 개체를 인스턴스화하는 플러그인의 일부인 메타 데이터를 선언하는 데 사용됩니다.
매크로는 객체를 통해 구현 된 인터페이스의 IID를 선언하고 플러그인의 메타 데이터가 들어있는 파일을 참조해야합니다.
Qt 플러그인의 소스 코드에는이 매크로가 정확히 하나 있어야합니다.
Example:
{
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDummyPlugin" FILE "mymetadata.json")
};
이 매크로가 나타나는 클래스는 기본 구성 가능해야합니다.
FILE은 선택적이며 json 파일을 가리 킵니다.
json 파일은 빌드 시스템이 지정한 include 디렉토리 중 하나에 있어야합니다. moc는 지정된 파일을 찾을 수 없을 때 오류와 함께 종료합니다.
이 함수는 Qt 5.0에서 처음 소개되었습니다.
댓글 없음:
댓글 쓰기