Автор: zamnach 5.8.2008, 13:38
синопсис:
по книге Бланшетт сделан плагин к Designer.
форма в новым виджетом (который из плагина) сохраняется в файл.
при динамической загрузке формы через QUiLoader видны все виджеты за исключением самописного.
как это побороть?
Спасибо
Автор: Litkevich Yuriy 5.8.2008, 14:43
может в pro-файле не хватает каких-нибудь библиотек, которые плагин реализуют?
Автор: zamnach 5.8.2008, 15:04
Цитата(Litkevich Yuriy @ 5.8.2008, 15:43)
может в pro-файле не хватает каких-нибудь библиотек, которые плагин реализуют?
вопроса я не понял, поэтому встречный вопрос:
речь идет о pro-файле плагина или pro-файле проекта, втягивающего динамически формы?
Автор: Litkevich Yuriy 5.8.2008, 15:09
Цитата(zamnach @ 5.8.2008, 19:04)
pro-файле проекта, втягивающего динамически формы?
ведь конечная программа должна загрузить в память этот плагин, значит она должна знать о его существовании.
P.S. а чего ты так увлекся динамической загрузкой виджетов?
Автор: zamnach 5.8.2008, 16:32
Цитата(Litkevich Yuriy @ 5.8.2008, 16:09)
P.S. а чего ты так увлекся динамической загрузкой виджетов?
надо разработать виджеты, запихнуть их в дизайнер.
с помощью этих виджетов будут разрабатываться инженерами (далекими от программирования людьми) формы.
Формы будут считываться в приложении динамически,
заполняться какими-то данными, пользователь будет иметь возможность поменять данные.
Данные являются ИД для неких математических расчетов.
Т.о - динамическая загрузка виджетов позволяет организовать гибкий пользовательский интерфейс к некоемому математическому движку.
вот-как-то-так
Автор: zamnach 6.8.2008, 11:31
обнаружилось следующее:
подправил pro файл плагина: добавил строку как в документации
#! [1] CONFIG += designer plugin debug_and_release
(было CONFIG += designer plugin release /*так в книге хитрого Бланшетт*/)
пересобрал плагин.
теперь в Debug режиме как не грузились custom widget динамически, так и не грузятся.
в Release режиме - все ОК. custom Widget грузятся и работают.
в чем засада? как сделать так, чтобы и в debug-режиме все работало?
спасибо.
Автор: Litkevich Yuriy 6.8.2008, 12:37
zamnach, а ты собираешь какой командой?
make
или
make release
Автор: zamnach 6.8.2008, 12:53
Цитата(Litkevich Yuriy @ 6.8.2008, 13:37)
zamnach, а ты собираешь какой командой?
make
или
make release
я таких команд ваще не знаю
qmake -project (затем pro файл правится)
qmake -t vcapp (в рез-те файл проекта с обвязкой для MSVC2005).
открываю проект, сохраняю solution (если это dll, то правлю настройки проекта - вместо exe на dll + расширение результирующего файла)
и кнопка в MSVC2005 - Build Solution.
вуаля.
Автор: Litkevich Yuriy 6.8.2008, 13:38
zamnach, попробуй в командной строке студии
qmake
make
должны собратся релиз и дебаг
Автор: zamnach 28.11.2008, 16:14
в качестве аккорда к ветке.
Краткая метода по использованию самописного виджета (Custom Widget) в своих программах,
написанных в MSVC2005+QT4.4.0
1. Делаем свой виджет
1.1. примерный вид pro-файла:
#! [0]
CONFIG += designer plugin debug_and_release
#! [0]
TARGET = $$qtLibraryTarget($$TARGET)
#! [1]
TEMPLATE = lib
#! [1]
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/designer
# Input
HEADERS += {тут пути к h-файлам}
SOURCES += {тут пути к cpp-файлам}
RESOURCES += {тут пути к qrc-файлам}
# ================================
# install
target.path = $$[QT_INSTALL_PLUGINS]/designer
sources.files = $$SOURCES $$HEADERS *.pro
# sources.path = $$[CurrentDir]
INSTALLS += target sources
1.2 Собираем под VC проект со своим виджетом
1.2.1 собираем в Debug
1.2.2 собираем в Release
1.3 Копируем файлы dll, exp, lib (из папок Debug и Release проекта) в $QTDIR$\plugins\designer\ (т.е. в папку плагинов дизайнера)
2. Создаем проект программы, загружающей формы с виджетами динамически (т.е. использующих UiLoader)
2.1 Копируем файлы dll, lib(из папок Debug и Release виджета) + h-файл виджета (не плагина, устанавливающего виджет в дизайнер, а самого виджета) в проект программы
2.2. добавляем в проект MSVC h- и lib- файлы
2.3. форму *.ui загружаем по примеру Бланшетт
примерно, так.
p/s №1 Если есть замечания - излагайте, может эта ветка поможет новичкам быстро освоить динамическую загрузку форм, содержащих, в том числе, custom widget
p/s №2 Файлы dll виджета надо копировать в
корень проекта MSVC. Если скопировать lib и dll не в корневую папку проекта, а в подпапку, то проект перестает запускаться (компилится успешно, так я не забываю)) перепрописать пути к либам).
До входа в main появляется MessageBox "Не удалось найти компонент", "Приложению не удалось запуститься, поскольку {имя dll-файла виджета} не был найден. Повторная установка приложения может исправить эту проблему"
Кто-нить знает, как побороть эту проблему?
Сувж.