crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Копии плагина в приложении, Как реализовать?
wiz29
  опции профиля:
сообщение 5.4.2011, 10:45
Сообщение #11


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(fogi @ 5.4.2011, 10:00) *
Цитата(Litkevich Yuriy @ 4.4.2011, 19:13) *
%QTDIR%\examples и Асистент, с описанием примера плагина. Вроде Plug&Paint называется


Это я все изучил, там все просто. Интересен пример фабрики плагинов, и менеджера плагинов.
Ничего доступного для своего понимания пока не нашел.. Увы..

Фабрику плагинов ты можешь написатьсам, смотри в сторону патерна "Factory", у А.Александреску есть достаточно наглядные примеры создания фабрик.
Менеджер плагинов думаю будет зависеть от назначения и типов плагинов для твоего приложения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 6.4.2011, 15:32
Сообщение #12


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

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




Репутация:   0  


Цитата(wiz29 @ 5.4.2011, 11:45) *
Фабрику плагинов ты можешь написатьсам, смотри в сторону патерна "Factory", у А.Александреску есть достаточно наглядные примеры создания фабрик.
Менеджер плагинов думаю будет зависеть от назначения и типов плагинов для твоего приложения.


Спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 12.4.2011, 13:27
Сообщение #13


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

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




Репутация:   0  


Пока не разобрался с менеджером плагинов. Может кто нибудь поможет выбрать верный путь?
1. Есть mdi приложение.
2. Окна в mdi приложении создаются плагинами.
3. Функцией плагина меняется информация в созданном окне.

Вопросы следующие:
1. Как лучше хранить экземпляры загруженных плагинов?
2. Как перехватить вызов закрытия окна прагина, и выгрузить соответствующий плагин из хранилища плагинов.


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 12.4.2011, 13:34
Сообщение #14


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(fogi @ 12.4.2011, 14:27) *
Пока не разобрался с менеджером плагинов. Может кто нибудь поможет выбрать верный путь?
1. Есть mdi приложение.
2. Окна в mdi приложении создаются плагинами.
3. Функцией плагина меняется информация в созданном окне.

Вопросы следующие:
1. Как лучше хранить экземпляры загруженных плагинов?
2. Как перехватить вызов закрытия окна прагина, и выгрузить соответствующий плагин из хранилища плагинов.

1. в приложении можно хранить список QObject*
2. с плагином всегда связан некий QWidget?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 12.4.2011, 15:35
Сообщение #15


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

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




Репутация:   0  


Цитата(wiz29 @ 12.4.2011, 14:34) *
1. в приложении можно хранить список QObject*
2. с плагином всегда связан некий QWidget?


1. где то так и собираюсь сделать.
2. Да, суть плагина создать дочернее окно и отображать в нем данные. Нужно чтобы при закрытии окна экземпляр плагина удалялся из QList
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 12.4.2011, 15:51
Сообщение #16


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


ну тогда сделай интерфейс ко всем плагинам с методом получения QWidget*, далее установи eventFilters для этих окошек и, отловив QEvent::close , выгрузи соответствующий плагин , ну, соответственно, со всеми синхронизирующими вызовами.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 12.4.2011, 17:48
Сообщение #17


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

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




Репутация:   0  


Цитата(wiz29 @ 12.4.2011, 16:51) *
ну тогда сделай интерфейс ко всем плагинам с методом получения QWidget*, далее установи eventFilters для этих окошек и, отловив QEvent::close , выгрузи соответствующий плагин , ну, соответственно, со всеми синхронизирующими вызовами.


А примерчика такой системы не найдется?

И еще вопросик как из сообщения о закрытии от виджета узнать какой экземпляр плагина в QList создал этот виджет? По Parent?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 13.4.2011, 9:07
Сообщение #18


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(fogi @ 12.4.2011, 18:48) *
И еще вопросик как из сообщения о закрытии от виджета узнать какой экземпляр плагина в QList создал этот виджет? По Parent?

Узнать оч просто, тк за твоими указателями на QObject* стоит некий плагин, он соответственно реализует некий интерфейс предоставляющий указатель QWidget*, простым проходом по списку плагинов и сравнением сответсвующих указателей на виджеты, либо хранить в приложении вместо списка плагинов ассоциативный массив с парами <QWidget*, QObject*>, тогда не нужно будет морочиться с кастами к тому или иному интерфейсу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.3.2024, 4:17