crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> плагины к Qt Desiner, виджеты не видны при динамической загрузке диалога
zamnach
  опции профиля:
сообщение 5.8.2008, 13:38
Сообщение #1


Студент
*

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

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




Репутация:   0  


синопсис:
по книге Бланшетт сделан плагин к Designer.
форма в новым виджетом (который из плагина) сохраняется в файл.
при динамической загрузке формы через QUiLoader видны все виджеты за исключением самописного.
как это побороть?
Спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.8.2008, 14:43
Сообщение #2


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

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

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




Репутация:   94  


может в pro-файле не хватает каких-нибудь библиотек, которые плагин реализуют?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 5.8.2008, 15:04
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 5.8.2008, 15:43) *
может в pro-файле не хватает каких-нибудь библиотек, которые плагин реализуют?

вопроса я не понял, поэтому встречный вопрос:
речь идет о pro-файле плагина или pro-файле проекта, втягивающего динамически формы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.8.2008, 15:09
Сообщение #4


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

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

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




Репутация:   94  


Цитата(zamnach @ 5.8.2008, 19:04) *
pro-файле проекта, втягивающего динамически формы?

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

P.S. а чего ты так увлекся динамической загрузкой виджетов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 5.8.2008, 16:32
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 5.8.2008, 16:09) *
P.S. а чего ты так увлекся динамической загрузкой виджетов?


надо разработать виджеты, запихнуть их в дизайнер.
с помощью этих виджетов будут разрабатываться инженерами (далекими от программирования людьми) формы.
Формы будут считываться в приложении динамически,
заполняться какими-то данными, пользователь будет иметь возможность поменять данные.
Данные являются ИД для неких математических расчетов.
Т.о - динамическая загрузка виджетов позволяет организовать гибкий пользовательский интерфейс к некоемому математическому движку.
вот-как-то-так
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 6.8.2008, 11:31
Сообщение #6


Студент
*

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

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




Репутация:   0  


обнаружилось следующее:
подправил 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
Сообщение #7


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

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

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




Репутация:   94  


zamnach, а ты собираешь какой командой?
make
или
make release
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 6.8.2008, 12:53
Сообщение #8


Студент
*

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

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




Репутация:   0  


Цитата(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
Сообщение #9


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

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

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




Репутация:   94  


zamnach, попробуй в командной строке студии
qmake
make
должны собратся релиз и дебаг
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 28.11.2008, 16:14
Сообщение #10


Студент
*

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

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




Репутация:   0  


в качестве аккорда к ветке.
Краткая метода по использованию самописного виджета (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-файла виджета} не был найден. Повторная установка приложения может исправить эту проблему"
Кто-нить знает, как побороть эту проблему?
Сувж.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 15:00