<QtPlugin> - Определение плагинов
Заголовочный файл <QtPlugin> определяет макросы для определения плагинов. Подробнее...
Макросы
| Q_DECLARE_INTERFACE(ClassName, Identifier) | |
| Q_IMPORT_PLUGIN(PluginName) | |
| Q_PLUGIN_METADATA(...) |
См. также Как создавать плагины Qt.
Документация по макросам
Q_DECLARE_INTERFACE(ClassName, Identifier)
Этот макрос ассоциирует заданный Identifier (строковую литерал) с классом интерфейса, называемым ClassName. Identifier должен быть уникальным. Например:
#define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface" Q_DECLARE_INTERFACE(BrushInterface, BrushInterface_iid)
Этот макрос обычно используется сразу после определения класса ClassName в заголовочном файле. Подробнее см. пример Plug & Paint.
Если вы хотите использовать Q_DECLARE_INTERFACE с классами интерфейсов, объявленными в пространстве имен, то убедитесь, что Q_DECLARE_INTERFACE не находится внутри пространства имен. Например:
namespace Foo
{
struct MyInterface { ... };
}
Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface") См. также Q_INTERFACES() и Как создавать плагины Qt.
Q_IMPORT_PLUGIN(PluginName)
Этот макрос импортирует плагин с именем PluginName, которое соответствует имени класса, объявляющего метаданные для плагина с помощью Q_PLUGIN_METADATA().
Вставка этого макроса в исходный код вашего приложения позволит использовать статический плагин.
Пример:
Q_IMPORT_PLUGIN(qjpeg)
Статические плагины также должны быть включены компоновщиком при сборке вашего приложения. Для предопределённых плагинов Qt вы можете использовать QTPLUGIN для добавления необходимых плагинов в сборку. Например:
TEMPLATE = app QTPLUGIN += qjpeg qgif # image formats
См. также Статические плагины, Как создавать плагины Qt и Начало работы с qmake.
Q_PLUGIN_METADATA(...)
Этот макрос используется для объявления метаданных, которые являются частью плагина, создающего этот объект.
Макрос должен объявлять IID реализованного интерфейса через объект и ссылаться на файл, содержащий метаданные плагина.
В исходном коде плагина Qt должен присутствовать ровно один экземпляр этого макроса.
Пример:
class MyInstance : public QObject
{
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDummyPlugin" FILE "mymetadata.json")
}; Подробнее см. пример Plug & Paint.
Обратите внимание, что класс, к которому применяется этот макрос, должен быть конструктируемым по умолчанию.
FILE необязателен и указывает на json-файл.
Файл json должен находиться в одном из каталогов заголовков, указанных системой сборки. moc завершает работу с ошибкой, если не может найти указанный файл.
Эта функция была добавлена в Qt 5.0.
См. также Q_DECLARE_INTERFACE() и Как создавать плагины Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qtplugin.html