crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Плагин для QtDesigner, Custom widget
0xF
  опции профиля:
сообщение 18.3.2008, 11:32
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не работает... похоже, что мой плагин QtDesigner даже не грузит :(

Header:
class cFoldoutPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_INTERFACES( QDesignerCustomWidgetInterface )

private:

    bool                initialized;

public:

                        cFoldoutPlugin( QObject *parent = 0 );

    virtual QString        name() const;
    virtual QString        group() const;
    virtual QString        toolTip() const;
    virtual QString        whatsThis() const;
    virtual QString        includeFile() const;
    virtual QIcon        icon() const;
    virtual bool        isContainer() const;
    virtual QWidget*    createWidget(QWidget *parent);
    virtual bool        isInitialized() const;
    virtual void        initialize(QDesignerFormEditorInterface *core);
};


Code:
cFoldoutPlugin::cFoldoutPlugin( QObject *parent ) : QObject( parent ) {
    initialized = false;
}

void cFoldoutPlugin::initialize(QDesignerFormEditorInterface * /* core */)
{
    MessageBox( 0, 0, 0, 0 ); // ** Для проверки, загрузился ли плагин. Сообщение не появляется :(
    if( initialized )
        return;

    initialized = true;
}

bool cFoldoutPlugin::isInitialized( void ) const {
    return initialized;
}

QWidget *cFoldoutPlugin::createWidget( QWidget *parent ) {
    return new QFoldout( parent );
}

QString cFoldoutPlugin::name( void ) const {
    return QLatin1String( "QFoldout" );
}

QString cFoldoutPlugin::group( void ) const {
    return QLatin1String( "Containers" );
}

QIcon cFoldoutPlugin::icon( void ) const {
    return QIcon();
}

QString cFoldoutPlugin::toolTip( void ) const {
    return "";
}

QString cFoldoutPlugin::whatsThis( void ) const {
    return "";
}

bool cFoldoutPlugin::isContainer( void ) const {
    return false;
}

QString cFoldoutPlugin::includeFile() const {
    return "QFoldout.h";
}

Q_EXPORT_PLUGIN2( QFoldoutPlugin, cFoldoutPlugin ) // ** Может тут я чо-то не то написал?


.pro(переделал файл из примеров)
CONFIG      += designer plugin debug_and_release
TARGET      = $$qtLibraryTarget($$TARGET)
TEMPLATE    = lib
QTDIR_build:DESTDIR     = $$QT_BUILD_TREE/plugins/designer

HEADERS     = QFoldout.h \
              FoldoutPlugin.h
SOURCES     = QFoldout.cpp \
              FoldoutPlugin.cpp

# install
target.path = $$[QT_INSTALL_PLUGINS]/designer
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/designer/customwidgetplugin
INSTALLS += target sources


Потом скармливаю этот .pro qmake, скопировал в папку с плагином nmake & cl запускаю nmake без аргуметов получаю две ошибки:
Цитата
ERROR: cl.exe return code 0xc0000135
ERROR: nmake.exe return code 0x2


Попробовал собрать в студии, закинул туда исходники + moc файлы(то ли qmake сделал, то ли nmake...) - собралось, положил .dll в папку /Qt4.3.0/plugins/designer В результате моего виджета в дизайнере нету :(

Чо делать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 18.3.2008, 23:37
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Что, никто никогда плагинов не писал? :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.3.2008, 23:55
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


еще не приходилось, скачай готовый на qt-apps.org, раздел виджеты, посмотри исходник, вдруг прояснится, что ты не так делаешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 19.3.2008, 0:06
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Может потому что студией собираю? =\
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.3.2008, 0:11
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


ты по ссылке с ходи, там вроде светодиод (Led) люди как раз обсуждали относительно сборки его (плагина) студией, и вроде решили проблему, обсуждение под описанием идет, глянь лишним не будет, а я все равно своими руками не пробывал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 19.3.2008, 0:32
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сходил, посмотрел, немного прояснилось...
При сборке в дебаге в окне Help->About Plugins написана ошибка рядом с моим плагином:"Expected build key "Windows msvc release full-config", got "Windows msvc debug full-config""
Собрал в релизе: "Cannot mix debug and release libraries"

Хз че с этим делать :(

З.Ы. может из-за того, что мне moc-файлы nmake генерирует..? Запускаю nmake и он генерирует мне moc-файлы в папке debug... как заставить его генерировать для release? moc.exe вобще не хочет, пишет "Undefined interface" на строке с "Q_INTERFACES( QDesignerCustomWidgetInterface )".. :(

Сообщение отредактировал 0xF - 19.3.2008, 0:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 19.3.2008, 1:19
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Почему nmake может не работать? (см. ошибки в первом посте)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.3.2008, 1:49
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


nmake помоему здесь не причем, в результате работы его возникла ошибка, а она выше, я в Студии = NUL, но похоже что cl.exe это линкер, надо искать в справке что это за ошибка, по коду. А вообще жди когда ViGOur глянет, он вроде в студии работает, должен знать.

тут:
Q_EXPORT_PLUGIN2( QFoldoutPlugin, cFoldoutPlugin ) // ** Может тут я чо-то не то написал?

порядок параметров задом наперед,

вот тебе пример из книги Бланшет и СаммерфилдПрикрепленный файл  chap05.zip ( 5.89 килобайт ) Кол-во скачиваний: 244

, у меня компилится и в дизайнере появляется, устанавливается сам в нужный каталог если переменная среды QTDIR установлена,
перейди в каталог
....\chap05\iconeditorplugin\

командуй
qmake
make

все должно собратся и появится в дизайнере
каталог
....\chap05\iconeditor\

нужен

Сообщение отредактировал Litkevich Yuriy - 19.3.2008, 2:35
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.3.2008, 9:03
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Взял твои исходники, попробовал скомпилировать и все в порядке, может с QFoldout что-то не так?
Я просто без него компилил как ты понимаешь.

Единственные изменения которые сделал это:
MessageBox(( 0,0,0,0) поменял на QMessageBox::information( 0, "123", "123");
и
return new QFoldout ( parent ); на return new QWidget( parent );

И после копирования плагина в %qtdir%\plugins\designer при открытии QDesigner появляется сообщение: 123.

На всякий случай создал файл проекта, тебе нужно будет только вернуть то, что я указал выше, и добавить в сам проект файлы с QFoldout.
Прикрепленные файлы
Прикрепленный файл  plugins.zip ( 3.71 килобайт ) Кол-во скачиваний: 169
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
0xF
  опции профиля:
сообщение 19.3.2008, 12:37
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Фух, всем спасибо, заработало :) Оказалось, что по файлу .pro можно сгенерить проект для студии( qmake -t vcapp ProjectFile.pro ), что я и сделал, собрал и все заработало :)

ViGOur, а ты как проект сделал? Через qmake? Или вручную настроил?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 11:41