Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt инструментарий _ Как использовать WorldTimeClock (из дизайнера)?

Автор: Litkevich Yuriy 9.11.2009, 7:37

Положил в дизайнере на пустой виджет часики (плагин).

Дальше стандартно, используя множественное наследование, создал простой проектик.
не компилится ни в релизе ни в дебаге.
линкер в упор невидит нужных сиволов.

Как же использовать дизайнерские плагины?
В асистенте ответа не нашёл.

Автор: DIMEDROLL 9.11.2009, 9:08

Я так подозреваю что этот плагин надо скомпилить, у меня он лежит тут:
...Qt\4.5.2_shared\examples\designer\worldtimeclockplugin\
или добавить его исходники к себе в проект

Автор: SABROG 9.11.2009, 10:21

Еще надо сделать дополнительные телодвижения с .pro файлом в http://qt.nokia.com/developer/faqs/faq.2006-05-16.6272067269'e троллей написано.

Автор: Litkevich Yuriy 9.11.2009, 11:17

Цитата(DIMEDROLL @ 9.11.2009, 12:08) *
Я так подозреваю что этот плагин надо скомпилить
это-то само собой, иначеб я его на виджет положить не смог.

SABROG, а вот это сейчас попробую. Вообще несколько некузяво это место в справке сделано, как плагин сделать написано, а как использовать нет.
-----------

Любопытно.
Для данного конкретного плагина понадобилось добавить в pro-файл такие строчки:
#      --- WorldTimeClock plugin ---
INCLUDEPATH       +=    $$[QT_INSTALL_EXAMPLES]/designer/worldtimeclockplugin
QMAKE_LIBDIR   +=    $$[QT_INSTALL_PLUGINS]/designer
LIBS           +=  -lworldtimeclockplugin

После успешной компиляции программы (по умолчанию в отладчном режиме), программа не запускается требует dll'ку - логично. Но для меня было неожиданно, что её можно положить прямо к бинарю (В виндовозе разумеется). Я пологал, что нужно соблюсти правила по сохранению иерархии каталогов (как в случае с другими плагинами).
ЗАПУСКАЮ - програ аварийно завершается без сообщений. Запускаю через командную строку - пишет следующее:
L:\Repository\TramPamPam>app.d
QWidget: Must construct a QApplication before a QPaintDevice

abnormal program termination

L:\Repository\TramPamPam>
компилю прогу в релизе, запускается, часики идут.

Вопрос, почему в отладочном режиме нарушился порядок создания объектов, вместо какой-нибудь ругани о несовместимости dll'ки с приложением (ну там символы не те или подобное)?

-----------

накопал косячёк в примере плагина, никак не удавалось собрать отладочную его версию.
Не работала функция $$qtLibraryTarget(...)

РЕШЕНИЕ:
оказывается запись TEMPLATE = lib должна предшествовать этой фунции, только тогда к имени цели добавится буковка d

вобщем вот такой pro-файл у меня получился в конце концов:
#      --- WorldTimeClock plugin ---
INCLUDEPATH       += $$[QT_INSTALL_EXAMPLES]/designer/worldtimeclockplugin
QMAKE_LIBDIR   += $$[QT_INSTALL_PLUGINS]/designer
CONFIG (debug, debug|release) {
    LIBS           +=  -lworldtimeclockplugind
}else{
    LIBS           +=  -lworldtimeclockplugin
}
функция $$qtLibraryTarget(...) к сожалению работает только для TEMPLATE = lib

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)