Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: DrWebber от Май 09, 2012, 03:41



Название: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 09, 2012, 03:41
Здравствуйте, долго лазил по форумам, решения не нашел.

Собрал Qt Creator и плагин с помощью minqw, закинул плагин в папку C:\Qt\qtcreator-xxx\bin\designer. Открываю "творца", мой виджет нормально отображается, но как только я пытаюсь собрать проект с его использованием, возникают следующие ошибки:
Цитировать
In file included from mainwindow.cpp:2:
ошибка: customspin.h: No such file or directory
ошибка: ISO C++ forbids declaration of 'CustomSpin' with no type
ошибка: expected ';' before '*' token
In member function 'void Ui_MainWindow::setupUi(QMainWindow*)':
ошибка: 'customSpin' was not declared in this scope
ошибка: expected type-specifier before 'CustomSpin'
ошибка: expected ';' before 'CustomSpin'

Этот пример я взял вот отсюда: http://www.metrotek.spb.ru/files/sources/qt-widgets-article.zip в папке widget-plugin

На не пересобранном qt creatore даже удалось запустить данный пример, но самого виджета не было в списке.

В чем может быть проблема? Если что, то вот pro-файлы самого проекта с виджетом и того который использует его соответственно:

Код:
TARGET = widget_plugin
TEMPLATE = lib
CONFIG += designer \
    plugin

SOURCES += customspin.cpp \
    customspinplugin.cpp
HEADERS += customspin.h \
    customspinplugin.h
RESOURCES += widget-plugin.qrc
FORMS += customspin.ui
QMAKE_POST_LINK = cp \
    customspin.h \
    $(DESTDIR)

Код:
TARGET = widget_plugin_usage
TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
INCLUDEPATH += $$(QT_PLUGIN_PATH)/designer
LIBS += -L$$(QT_PLUGIN_PATH)/designer \
    -lwidget_plugin





Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 09, 2012, 16:43
Есть какие-нибудь идеи?


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: V1KT0P от Май 09, 2012, 16:51
Есть какие-нибудь идеи?
У меня спокойно без ошибок собирается.


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 09, 2012, 20:27
тот пример по ссылке?
а ты qt creator сам собирал?


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: V1KT0P от Май 09, 2012, 21:12
тот пример по ссылке?
а ты qt creator сам собирал?
Блин первый раз не глянул ошибку, тебе же говорят что заголовочный файл "customspin.h" не найден:
Цитировать
ошибка: customspin.h: No such file or directory


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 09, 2012, 21:42
да это я понял, я кидаю его к проекту там возникает другая ошибка
Цитировать
error: collect2: ld returned 1 exit status

Если не сложно, можешь описать по пунктам что нужно для того того, чтобы правильно собрать, подключить и использовать кутэшные плагины.


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: V1KT0P от Май 09, 2012, 22:27
да это я понял, я кидаю его к проекту там возникает другая ошибка
Цитировать
error: collect2: ld returned 1 exit status

Если не сложно, можешь описать по пунктам что нужно для того того, чтобы правильно собрать, подключить и использовать кутэшные плагины.
Посмотри на вкладке "Консоль сборки" там будет более подробное описание ошибки.


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 11, 2012, 15:28
Вот что пишет.


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: Пантер от Май 11, 2012, 15:43
Нет реализации конструктора CustomSpin.


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 11, 2012, 15:47
Как же нет, если вот он:

Код:
CustomSpin::CustomSpin( QWidget *parent )
  : QWidget( parent ),
    ui( new Ui::CustomSpin ),
    _min( 0 ),
    _max( 100 ),
    _value( 1 )
{
  ui->setupUi( this );
  setLayout( ui->horizontalLayout );
}

Правда он в файле customspin.cpp


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: V1KT0P от Май 11, 2012, 15:51
Вот что пишет.
А библиотеку customspin ты подключил?


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 11, 2012, 16:01
Ну вроде да.
(http://s50.radikal.ru/i127/1205/7a/dbe25d798b03.png)


Название: Re: Не собирается проект с кастомными виджет&
Отправлено: DrWebber от Май 11, 2012, 16:14
Может кто-нибудь объяснить где какие файлы должны находиться и какие должны быть подключены к проекту?


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: V1KT0P от Май 11, 2012, 16:15
Ну вроде да.
Да не плагин, а именно библиотеку подключил к своему проекту в pro файле? При компиляции он видит заголовочный файл, решает что функция уже есть, но так как она в виде библиотеки то при линковке ее нету ибо ты либу не подключил вот и ошибка.


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 11, 2012, 17:10
Подключил и все равно ошибки:
(http://s019.radikal.ru/i634/1205/2d/e859b58c35b8t.jpg) (http://radikal.ru/F/s019.radikal.ru/i634/1205/2d/e859b58c35b8.png.html)(http://i068.radikal.ru/1205/dc/a45d9d70a8edt.jpg) (http://radikal.ru/F/i068.radikal.ru/1205/dc/a45d9d70a8ed.png.html)


Код:
TARGET = widget-plugin-usage
TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h \
            customspin.h
FORMS += mainwindow.ui
INCLUDEPATH += $$(QT_PLUGIN_PATH)/designer
LIBS += widget_plugin.dll


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: Mikhail от Май 11, 2012, 22:27
Вам же сказали, что к проекту нужно подключить библиотеку

LIBS += widget_plugin.lib
желательно с путем

Да и qmake неплохо сделать


Название: Re: Не собирается проект с кастомными виджет&
Отправлено: DrWebber от Май 12, 2012, 01:14
у меня нет .lib файла, есть только .dll и .a
Я компилировал плагин с помощью mingw, а вот если компилировать студиевским компилятором, то там как раз нет dll, но есть lib. Это нормально?


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: Mikhail от Май 12, 2012, 08:18
Значит надо подключать
LIBS += widget_plugin.a

или

LIBS += lwidget_plugin

Для получения dll и lib при использовании MSVC необходимо что то типа

#ifdef DLL1_EXPORTS
#define DLL1_API __declspec(dllexport)
#else
#define DLL1_API __declspec(dllimport)
#endif


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: DrWebber от Май 12, 2012, 13:15
Значит надо подключать
LIBS += widget_plugin.a

или

LIBS += lwidget_plugin


Не помогло, те же ошибки.
Я правильно понял, что qt creator и плагин должны быть собраны одним компилятором? Что если все пересобрать студиевским, может помочь?


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: Mikhail от Май 12, 2012, 15:42
Конечно и плагин и creator должны быть собраны одним компилятором и Qt также им


Название: Re: Не собирается проект с кастомными виджетами qt creator
Отправлено: slava_d200 от Ноябрь 11, 2012, 17:16
DrWebber
так у Вас получилось собрать,
у меня аналогичная ситуация.
плагины собираются, но при использовании ругается что типа класс не найден.