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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: добавление в Designers собственных виджетов  (Прочитано 14919 раз)
dr_Begemot
Гость
« : Апрель 24, 2009, 12:42 »

Вопрос такой, как добавить собственный виджет к designers?

Сделал так:
в pro-файле написал:
Код:
TEMPLATE      = lib
CONFIG       += designer plugin release
HEADERS       = ../ColorButton/ColorButton.h \
                ColorButtonPlugin.h
SOURCES       = ../ColorButton/ColorButton.cpp \
                ColorButtonPlugin.cpp
RESOURCES     = ColorButtonPlugin.qrc
DESTDIR       = $$[QT_INSTALL_PLUGINS]/designer

В файле ColorButtonPlugin.h
Код:
class ColorButtonPlugin : public QObject,                       
public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_INTERFACES(QDesignerCustomWidgetInterface)

public:
    ColorButtonPlugin(QObject *parent = 0);

    QString name() const;
    QString includeFile() const;
    QString group() const;
    QIcon icon() const;
    QString toolTip() const;
    QString whatsThis() const;
    bool isContainer() const;
    QWidget *createWidget(QWidget *parent);
};

Компилю в VS2005.
dll-как копируется в нужную папку, но в самом Designer-е ничего не появляется.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Апрель 24, 2009, 12:52 »

Покажи колный код.

Q_EXPORT_PLUGIN2 незабыл?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #2 : Апрель 24, 2009, 12:58 »

Покажи колный код.

Q_EXPORT_PLUGIN2 незабыл?

Нет, не забыл...
ColorButtonPlugin.cpp
Код:
#include <QtPlugin>

#include "../ColorButton/ColorButton.h"
#include "ColorButtonPlugin.h"

ColorButtonPlugin::ColorButtonPlugin(QObject *parent)
    : QObject(parent)
{
}

QString ColorButtonPlugin::name() const
{
return "ColorButton";
}

QString ColorButtonPlugin::includeFile() const
{
return "ColorButton.h";
}

QString ColorButtonPlugin::group() const
{
return tr("My widgets");
}

QIcon ColorButtonPlugin::icon() const
{
return QIcon(":/images/iconeditor.png");
}

QString ColorButtonPlugin::toolTip() const
{
return tr("An color button widget");
}

QString ColorButtonPlugin::whatsThis() const
{
return tr("Programmer: Okunev Grigory");
}

bool ColorButtonPlugin::isContainer() const
{
return false;
}

QWidget *ColorButtonPlugin::createWidget(QWidget *parent)
{
return new ColorButton(parent);
}

Q_EXPORT_PLUGIN2(ColorButton, ColorButtonPlugin)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Апрель 24, 2009, 13:26 »

Если плугин скопировался туда куда нужно, тогда запусти дизайнер Help->About Plugins, найди свой плугин и глянь в описании что нетак
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #4 : Апрель 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"

что надо переделать?
Записан
igor_bogomolov
Гость
« Ответ #5 : Апрель 24, 2009, 13:33 »

Попробуйте в файл проекта добавить еще
Код:
CONFIG -= debug
У мяня без этой строчки свой виджеты тоже не появляются.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Апрель 24, 2009, 13:35 »

у тебя плугин собран с отладочной информацией (откуда она взялась хз, в профайле у тебя стоит release), попробуй просто пересобрать его.

(n)make clean
qmake
(n)make

После пересборки проверь зависимости (с какими либами он слинковался - с релизными или отладочными)
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #7 : Апрель 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?

Записан
dr_Begemot
Гость
« Ответ #8 : Апрель 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_ файле
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #9 : Апрель 24, 2009, 15:07 »

открывал проект VS и компилил в ней... виджет не появлялся... странно... какая разница - командой nmake компилить или Build->rebuild solutions  в VS?

А ты глянь какой тип проекта в студии стоит: дебаг или релиз
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #10 : Апрель 24, 2009, 15:36 »

А ты глянь какой тип проекта в студии стоит: дебаг или релиз

debug
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #11 : Апрель 24, 2009, 17:21 »

debug

Ну вот ответ на вопрос. Если хочешь компилить со студии, быбирай релиз (плуги к дизайнеру должны быть собраны в релизе)
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
migel
Гость
« Ответ #12 : Май 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
Кто знает как с этим бороться?

Всем спасибо разобрался.
« Последнее редактирование: Май 15, 2009, 09:33 от migel » Записан
ритт
Гость
« Ответ #13 : Май 15, 2009, 09:32 »

экспорт/импорт забыл?
Записан
migel
Гость
« Ответ #14 : Май 15, 2009, 09:34 »

экспорт/импорт забыл?
Либу плагина надо подцепить + ld.so.conf поправил
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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