Копии плагина в приложении, Как реализовать? |
Здравствуйте, гость ( Вход | Регистрация )
Копии плагина в приложении, Как реализовать? |
wiz29 |
5.4.2011, 10:45
Сообщение
#11
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
%QTDIR%\examples и Асистент, с описанием примера плагина. Вроде Plug&Paint называется Это я все изучил, там все просто. Интересен пример фабрики плагинов, и менеджера плагинов. Ничего доступного для своего понимания пока не нашел.. Увы.. Фабрику плагинов ты можешь написатьсам, смотри в сторону патерна "Factory", у А.Александреску есть достаточно наглядные примеры создания фабрик. Менеджер плагинов думаю будет зависеть от назначения и типов плагинов для твоего приложения. |
|
|
fogi |
6.4.2011, 15:32
Сообщение
#12
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 2.4.2011 Пользователь №: 2568 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
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 |
Пока не разобрался с менеджером плагинов. Может кто нибудь поможет выбрать верный путь? 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, 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 |
ну тогда сделай интерфейс ко всем плагинам с методом получения QWidget*, далее установи eventFilters для этих окошек и, отловив QEvent::close , выгрузи соответствующий плагин , ну, соответственно, со всеми синхронизирующими вызовами. А примерчика такой системы не найдется? И еще вопросик как из сообщения о закрытии от виджета узнать какой экземпляр плагина в QList создал этот виджет? По Parent? |
|
|
wiz29 |
13.4.2011, 9:07
Сообщение
#18
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
И еще вопросик как из сообщения о закрытии от виджета узнать какой экземпляр плагина в QList создал этот виджет? По Parent? Узнать оч просто, тк за твоими указателями на QObject* стоит некий плагин, он соответственно реализует некий интерфейс предоставляющий указатель QWidget*, простым проходом по списку плагинов и сравнением сответсвующих указателей на виджеты, либо хранить в приложении вместо списка плагинов ассоциативный массив с парами <QWidget*, QObject*>, тогда не нужно будет морочиться с кастами к тому или иному интерфейсу. |
|
|
Текстовая версия | Сейчас: 29.3.2024, 4:17 |