Название: Регистрация плагина в системе Отправлено: GqRun от Ноябрь 15, 2006, 13:57 Я написал плагин-виджет.
Если кинуть *so в /usr/lib/qt4/plugins/designer/, то он станет доступен в Designer и будет адекватно себя вести в предпросмотре формы (Ctrl+R). Но при компиляции проекта, использующего его, естественно возникнут ошибки (отсутствия хедера). Если кинуть все хедеры плагина в /usr/include/qt4/QtDesigner, то проект будет компилироваться до ошибки: Код: first_f.o: In function `Ui_MainWindow::setupUi(QMainWindow*)': Потом я где-то прочитал что нужно внести следующие изминения в *.pro и main.cpp: В main.cpp добавить: Код: #include <QtPlugin> В ProjectName.pro: Код: QTPLUGIN += PluginName Если внести эти изминения, то компиляция уже будет обрываться на этом: Код: /usr/bin/ld: cannot find -lqfsviewer Вопрос: как правильно устанавливать (регистрировать) плагины в систему (что куда копировать) и как использовать их в проектах. Если кому интересно, вот плагин: http://www.webfile.ru/1191573 Виджет для браузинга файловой системы. PS Странный момент: uic генерирует код формы требующий хедер моего плагина с именем qfsviewer, хотя хедер и сам класс называется QFSViewer. добавлено спустя 17 часов: Неужели никто из присутствующих никогда не писал плагинов для дизайнера? Название: Регистрация плагина в системе Отправлено: Mikhail от Ноябрь 15, 2006, 16:12 Никаких проблем с написание и использованием плагинов.
Необходимо различать плагин для дизайнера и файлы реализующие функциональность плагина. undefined reference to `QFSViewer::QFSViewer(QWidget*)' скорее всего отсутствует или не в пути реализация плагина Место плагина в каталоге плагинов дизайнера и лучше не искать другого. При компиляции проекта использующего плагин необходимы -файлы, которые ты размещаешь в любом месте, но указываешь в проекте INCLUDEPATH для них. Функциональность плагина - в библиотеке. На нее также укажи путь и подключи в проекте через LIBS +=. /usr/bin/ld: cannot find -lqfsviewer означает, что у тебя либо нет этой библиотеки , либо она по другому пути А вообще почитай ассистента и посмотри реализацию плагинов в примерах QT. Не является странным имя файла хедера - прописными буквами. Надо же как то избегать граблей. Windows MSVC все сожрет, а в Linux регистр символов в имени файла значащий. Название: Регистрация плагина в системе Отправлено: burkav84 от Ноябрь 15, 2006, 19:48 Цитата: "Mikhail" Место плагина в каталоге плагинов дизайнера и лучше не искать другого. А не знаешь как подгужать эти плагины не из $QTDIR/plugins/designer, а например application_directory/plugins ? Название: Регистрация плагина в системе Отправлено: Mikhail от Ноябрь 15, 2006, 20:01 А зачем бы это нужно было. Никаких здравых мыслей в голову не приходит.
Плагин дизайнера необходим только при редактировании формы. Редактирование происходит в дизайнере. Значит на машине есть Qt, а соответственно и путь $QTDIR/plugins/designer. Не надо усложнять. Название: Регистрация плагина в системе Отправлено: GqRun от Ноябрь 16, 2006, 01:24 OK, допустим я разрабатываю плагин как конечный продукт.
Он должен быть доступен в дизайнере и должна быть возможность скомпилировать проекты, использующие его. Какие файлы должны быть "установлены в систему" кроме *.so? Только хедеры? Куда их лучше положить в линуксе? Название: Регистрация плагина в системе Отправлено: Mikhail от Ноябрь 16, 2006, 08:34 А читать изложенное мной выше все равно не хочется?
Кроме хедеров нужны и библиотеки (либо исходники ). А уж куда ставить- хозяин барин. ТОлько необходимо дать рекомендации по указанию путей. Название: Регистрация плагина в системе Отправлено: GqRun от Ноябрь 16, 2006, 12:21 - Я скопировал libQFSViewer.so в /usr/lib/qt4/plugins/designer/.
- В файле проекта использующего плагин добавил: - INCLUDEPATH с абсолютным путем к папке со всеми исходниками. - LIBS с абсолютным/относительным (на результат не влияло) путем к библиотеке (*.so) - QTPLUGIN += QFSViewer Но при компиляции все равно получаю ошибку: Код: /usr/bin/ld: cannot find -lqfsviewer Я просто не понимаю что еще я мог забыть. Вроде бы все есть: и библиотека (so) и исходники... А про пути я спросил, именно рекомендации. То что можно засунуть куда угодно это понятно. Просто если каждый будет так делать выйдет помойка. В assistant подробно рассмотрено создание плагина, но совершенно не освящено его использование в проектах... В любом случае спасибо за помощь. Название: Регистрация плагина в системе Отправлено: Mikhail от Ноябрь 16, 2006, 12:45 Надо посмотреть файл проекта.
qmake не забыл выполнить после изменения проекта? Выкладывай добавлено спустя 1 минуту: QTPLUGIN += QFSViewer на мой взгля лишнее Название: Регистрация плагина в системе Отправлено: GqRun от Ноябрь 16, 2006, 13:00 http://www.webfile.ru/1194155 - пароль: qviewer-alpha1.rar
http://www.webfile.ru/1194158 - пароль: qfsviewer-alpha2.rar Е-е-е-е!!! Сработало! Если закомментировать QTPLUGIN += QFSViewer, то будет ошибка. Как оказалось это из-за того что в main.cpp я добавил: Код: Q_IMPORT_PLUGIN(QFSViewer) Вот это и было лишним. Спасибо огромное за помощь. Как оказалось, действительно, кроме либы и сырцов ничего не нужно. Косяк был в исходниках самого проекта. Название: Регистрация плагина в системе Отправлено: Mikhail от Ноябрь 16, 2006, 17:29 На здоровье.
Еще при выполнении make install хорошо бы положить библиотеку qfsviewer.lib куда-нибудь. Например, $(QTDIR)/lib. А хедеры в $(QTDIR)/include или $(QTDIR)/include/qfsviewer. |