Создание плагина

Добавлено 15 мая 2022 в 05:38

Qt Creator содержит мастер для создания плагина расширения QML QtQuick 2 (QtQuick 2 QML Extension Plugin), который можно найти в разделе Библиотека (Library) при создании нового проекта. Мы используем его для создания плагина с именем fileio с объектом FileIO для запуска в модуле org.example.io.

Подсказка

Текущий мастер создает проект на основе QMake. Для создания проекта на основе CMake используйте пример из этой главы в качестве отправной точки.

Проект должен состоять из файлов fileio.h и fileio.cpp, которые объявляют и реализуют тип FileIO, и файла fileio_plugin.cpp, содержащего настоящий класс плагина, который позволяет движку QML обнаруживать расширение.

Класс плагина является производным от класса QQmlEngineExtensionPlugin и содержит макросы Q_OBJECT и Q_PLUGIN_METADATA. Весь файл можно увидеть ниже.

#include <QQmlEngineExtensionPlugin>

class FileioPlugin : public QQmlEngineExtensionPlugin
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid)
};

#include "fileio_plugin.moc"

Расширение автоматически обнаружит и зарегистрирует все типы, отмеченные QML_ELEMENT и QML_NAMED_ELEMENT. Мы увидим, как это делается в следующем разделе «Реализация FileIO».

Чтобы импорт модуля работал, пользователю также необходимо указать URI, например, import org.example.io. Интересно, что мы нигде не можем увидеть URI модуля. Это задается извне с помощью файла qmldir или в файле CMakeLists.txt вашего проекта.

Файл qmldir определяет содержимое вашего плагина QML или, что еще лучше, сторону QML вашего плагина. Написанный вручную файл qmldir для нашего плагина должен выглядеть примерно так:

module org.example.io
plugin fileio

Модуль – это URI, который импортирует пользователь, и после него вы указываете, какой плагин загрузить для указанного URI. Строка плагина должна совпадать с именем файла вашего плагина (под Mac это будет libfileio_debug.dylib в файловой системе и fileio в qmldir; для системы Linux та же строка будет искать libfileio.so). Эти файлы создаются Qt Creator'ом на основе предоставленной информации.

Более простой способ создать правильный файл qmldir – в файле CMakeLists.txt для вашего проекта в макросе qt_add_qml_module. Здесь параметр URI используется для указания URI плагина, например, org.example.io. Таким образом, файл qmldir создается при сборке проекта.

При импорте модуля с именем org.example.io движок QML просматривает один из путей импорта и пытается найти путь "org/example/io" с помощью qmldir. Затем qmldir сообщает движку, для какого URI модуля какую библиотеку загружать в качестве плагина расширения QML. Два модуля с одинаковым URI переопределяют друг друга.

Теги

C++ / CppCMakeGUI / Графический интерфейс пользователяQMLQtQt CreatorQtQuickПлагин / PluginПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.