Название: добавление в Designers собственных виджетов Отправлено: dr_Begemot от Апрель 24, 2009, 12:42 Вопрос такой, как добавить собственный виджет к designers?
Сделал так: в pro-файле написал: Код: TEMPLATE = lib В файле ColorButtonPlugin.h Код: class ColorButtonPlugin : public QObject, Компилю в VS2005. dll-как копируется в нужную папку, но в самом Designer-е ничего не появляется. Название: Re: добавление в Designers собственных виджетов Отправлено: pastor от Апрель 24, 2009, 12:52 Покажи колный код.
Q_EXPORT_PLUGIN2 незабыл? Название: Re: добавление в Designers собственных виджетов Отправлено: dr_Begemot от Апрель 24, 2009, 12:58 Покажи колный код. Q_EXPORT_PLUGIN2 незабыл? Нет, не забыл... ColorButtonPlugin.cpp Код: #include <QtPlugin> Название: Re: добавление в Designers собственных виджетов Отправлено: pastor от Апрель 24, 2009, 13:26 Если плугин скопировался туда куда нужно, тогда запусти дизайнер Help->About Plugins, найди свой плугин и глянь в описании что нетак
Название: Re: добавление в Designers собственных виджетов Отправлено: dr_Begemot от Апрель 24, 2009, 13:31 Если плугин скопировался туда куда нужно, тогда запусти дизайнер Help->About Plugins, найди свой плугин и глянь в описании что нетак действительно... Он в папке failed plugins... Там написано: the plugin ... usesincompatible Qt library. Expected build key "Windows msvc release full-config", got "Windows msvc debug full-config" что надо переделать? Название: Re: добавление в Designers собственных виджетов Отправлено: igor_bogomolov от Апрель 24, 2009, 13:33 Попробуйте в файл проекта добавить еще
Код: CONFIG -= debug Название: Re: добавление в Designers собственных виджетов Отправлено: pastor от Апрель 24, 2009, 13:35 у тебя плугин собран с отладочной информацией (откуда она взялась хз, в профайле у тебя стоит release), попробуй просто пересобрать его.
(n)make clean qmake (n)make После пересборки проверь зависимости (с какими либами он слинковался - с релизными или отладочными) Название: Re: добавление в Designers собственных виджетов Отправлено: dr_Begemot от Апрель 24, 2009, 13:49 у тебя плугин собран с отладочной информацией (откуда она взялась хз, в профайле у тебя стоит release), попробуй просто пересобрать его. (n)make clean qmake (n)make После пересборки проверь зависимости (с какими либами он слинковался - с релизными или отладочными) Проблема решилась) CONFIG -= debug добавлять не стал, а сделал просто qmake nmake и все, виджет появился! Раньше я делал так: Создавал проект под VS qmake -tp vc ColorButtonPlugin.pro открывал проект VS и компилил в ней... виджет не появлялся... странно... какая разница - командой nmake компилить или Build->rebuild solutions в VS? Название: Re: добавление в Designers собственных виджетов Отправлено: dr_Begemot от Апрель 24, 2009, 13:54 у тебя плугин собран с отладочной информацией (откуда она взялась хз, в профайле у тебя стоит release), попробуй просто пересобрать его. (n)make clean qmake (n)make После пересборки проверь зависимости (с какими либами он слинковался - с релизными или отладочными) По ходу еще проблемка появилась... Добавив на форму мой виджет компилю проект, а он пишет:Cannot open include file: 'ColorButton.h': No such file or directory Причем #include "ColorButton.h" объявлено в сгенерированном ui_ файле Название: Re: добавление в Designers собственных виджетов Отправлено: pastor от Апрель 24, 2009, 15:07 открывал проект VS и компилил в ней... виджет не появлялся... странно... какая разница - командой nmake компилить или Build->rebuild solutions в VS? А ты глянь какой тип проекта в студии стоит: дебаг или релиз Название: Re: добавление в Designers собственных виджетов Отправлено: dr_Begemot от Апрель 24, 2009, 15:36 А ты глянь какой тип проекта в студии стоит: дебаг или релиз debug Название: Re: добавление в Designers собственных виджетов Отправлено: pastor от Апрель 24, 2009, 17:21 debug Ну вот ответ на вопрос. Если хочешь компилить со студии, быбирай релиз (плуги к дизайнеру должны быть собраны в релизе) Название: Re: добавление в Designers собственных виджетов Отправлено: migel от Май 15, 2009, 08:45 dr_Begemot писал:
По ходу еще проблемка появилась... Добавив на форму мой виджет компилю проект, а он пишет:Cannot open include file: 'ColorButton.h': No such file or directory Причем #include "ColorButton.h" объявлено в сгенерированном ui_ файле У меня получается такая проблема, как с ней бороться кто знает. Использую куте креатор, добавился виджет туда без проблем, испльзовал пример из ассистана, Custom Widget Plugin Example тот который AnalogClockPlugin, бросаю на форму, компилю, пишет тоже саме что неможет найти хедер, ладно прописавю хедер INCLUDEPATH, вылетает вот что: project/widget/test/ui_dialog.h:32: undefined reference to `AnalogClock::AnalogClock(QWidget*) :-1: error: collect2: ld returned 1 exit status Кто знает как с этим бороться? Всем спасибо разобрался. Название: Re: добавление в Designers собственных виджетов Отправлено: ритт от Май 15, 2009, 09:32 экспорт/импорт забыл?
Название: Re: добавление в Designers собственных виджетов Отправлено: migel от Май 15, 2009, 09:34 экспорт/импорт забыл? Либу плагина надо подцепить + ld.so.conf поправилНазвание: Re: добавление в Designers собственных виджетов Отправлено: pastor от Май 15, 2009, 14:14 Название: Re: добавление в Designers собственных виджетов Отправлено: migel от Май 16, 2009, 15:35 прописал в про файле проекта где использую плагин libanalogclockplugin.so
unix:LIBS += -L$(HOME)/qtcreator-1.0.0/bin/designer -lanalogclockplugin после этого все заработало. Но тут у меня вознмкла другая проблема может кто знает куда искать. Создал свой виджет на основе QTableView, сортировку и инкрементальный поиск позволяет делать. Так вот создал плагин куте креатор его подхватил, но почему то получилось так что функция QWidget* createWidget(QWidget *parent); возращает QWidget а не мой класс CustomTable: QWidget* CustomTablePlugin::createWidget(QWidget *parent) { return new CustomTable(parent); } В итоге получается так что в дизайнере я вижу мой виджет но вместо моего класса наблюдаю QWidget, при запуске вижу пустую форму что и понятно. Да кстати а в Qt Designer появляется сообщение: A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class CustomTable. It returned a widget of class QWidget. Все проблема решена забыл написать Q_OBJECT в классе CustomTable. |