У меня есть небольшое приложение, в котором пользователи могут создавать свои собственные плагины как QML файлы. Эти плагины получают уведомления об определенных событиях, а их пользовательские интерфейсы отображаются один за другим в TabView.
Однако некоторые плагины нуждаются в функциональных возможностях, которые не могут быть предоставлены через QML, например, при записи в файлы. Как я могу позволить моим пользователям расширять функциональность по своему усмотрению?
Ваш пользователь должен:
QQmlExtensionPlugin
для регистрации этого QObject как типа QML.qmldir
чтобы сообщить движку QML, как загрузить DLL.EDIT: Qt Creator автоматизирует немного этого процесса для вас. Перейдите в "Файл" → "Новый файл или проект..." → "Проекты" → "Библиотеки" → "Qt Quick 2 Extension Plugin" -
Более подробную информацию об этом процессе можно найти в документации:
Примечание 1: Ваш пользователь не будет писать *.qml файл.
Примечание 2: Каждый плагин должен быть в своей собственной подпапке. Это связано с тем, что каждому плагину C++ нужен один файл qmldir
, но вы не можете иметь несколько файлов qmldir
в одной папке.
Вы можете найти некоторые реальные примеры в своей Qt-установке. Перейдите к, скажем, C:\Qt\5.3\mingw482_32\qml - все подпапки здесь содержат плагины QML, в основном написанные в C++. Вот пример исходного кода:
importPlugin()
иpluginPathList()