Russian Qt Forum
Апрель 19, 2024, 10:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QtQuick Extension Plugin  (Прочитано 4478 раз)
NKovalev64
Гость
« : Октябрь 23, 2014, 11:02 »

Буду краток:
Это:
http://qt-project.org/doc/qt-5/gettingstartedqml.html
это:
http://qt-project.org/doc/qt-5/qtqml-modules-cppplugins.html
и это:
http://qt-project.org/doc/qt-5/qtqml-modules-qmldir.html

не дало возможности создать нормальный, полноценный Qt Quick 2 Extension plugin для использования в любом другом Qt Quick 2 проекте.

Вводные данные:
 - плагин создается через мастер проектов, - Qt Quick2 Extension plugin;
 - тестовый проект (для проверки плагина) - Quick 2 application;
 - файлы плагина (либу и qmldir) клал и в папку сборки тест-проекта и в папку imports в папке сборки тест-проекта, - никакой разницы.
Симптомы:
 - cам плагин собирается в виде библиотеки .so и файла qmldir, которые лежат в директории сборки проекта плагина;
 - ни в какой другой проект этот плагин не вставляется, никаким разумным способом;
 - утилита qmlplugindump не видит никакого "компонента", который бы она могла прочитать и выделить из него публичный интерфейс;

В связи с этим вопрос: каким образом можно собрать свои QML компоненты в какой-либо удобоиспользуемый формат для подключения в других проектах, при этом не раскрывая содержания самих C++\QML файлов.

P.S.: Я понимаю, что врядли на такой вопрос можно получить полноценный развернутый ответ на форуме, поэтому предлагаю желающим поделиться своими знаниями, но не располагающим для этого "драгоценным" временем - оплатить вашу консультацию в скайпе\тимвьювере\etc по установленному вами тарифу.
Записан
RSATom
Гость
« Ответ #1 : Октябрь 23, 2014, 11:28 »

Вот тут товарищ переделывал (последние 2 патча по ссылке) мою библиотеку для использования в виде плагина (похоже для последующего использования с питоном). Насколько успешно сказать не могу, но может наведет на какие либо мысли...
« Последнее редактирование: Октябрь 23, 2014, 11:52 от RSATom » Записан
NKovalev64
Гость
« Ответ #2 : Октябрь 23, 2014, 12:06 »

Спасибо конечно, но это немного не то.
Мне более чем странна сама ситуация, - ведь подразумевается что это должно быть "просто".
Я достаточно давно работаю с Qt, разбираюсь в её внутреннем устройстве, и уж никак не ожидал что столь простая операция обернется для меня тремя впустую потерянными днями(
Очень прошу знающих точно как это делается помочь живой консультацией с демонстрацией успешного процесса.
Записан
RSATom
Гость
« Ответ #3 : Октябрь 23, 2014, 12:51 »

я бы поробовал поставить breakpoint в QLibraryInfo::location и посмотрел бы что и откуда именно qt пытается загружать...
Записан
NKovalev64
Гость
« Ответ #4 : Октябрь 23, 2014, 16:07 »

Потихоньку разобираюсь.
Пока удалось собрать плагин и таки подключить его в другом Quick проекте.
При этом те типы которые в проекте плагина созданы как С++ классы и соответсвенно зарегистрированны как QML типы, работают хорошо.
А вот те типы которые созданны непосредственно как QML файлы и подключены в плагин через ресурсы, они тоже создаются  работают нормально, но их непонимает крейтор.
Во вложение, MyCustomItem - C++ класс, а MyQmlItem - QML файл компонента, агрегированный в плагин через ресурс.
« Последнее редактирование: Октябрь 23, 2014, 16:09 от NKovalev64 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.