Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
wiz29 |
5.4.2011, 10:45
Сообщение
#11
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12
|
Цитата(fogi @ 5.4.2011, 10:00) Link Цитата(Litkevich Yuriy @ 4.4.2011, 19:13) Link %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) Link Фабрику плагинов ты можешь написатьсам, смотри в сторону патерна "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) Link Пока не разобрался с менеджером плагинов. Может кто нибудь поможет выбрать верный путь? 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) Link 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) Link ну тогда сделай интерфейс ко всем плагинам с методом получения 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) Link И еще вопросик как из сообщения о закрытии от виджета узнать какой экземпляр плагина в QList создал этот виджет? По Parent? Узнать оч просто, тк за твоими указателями на QObject* стоит некий плагин, он соответственно реализует некий интерфейс предоставляющий указатель QWidget*, простым проходом по списку плагинов и сравнением сответсвующих указателей на виджеты, либо хранить в приложении вместо списка плагинов ассоциативный массив с парами <QWidget*, QObject*>, тогда не нужно будет морочиться с кастами к тому или иному интерфейсу. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 27.12.2025, 7:53 |