Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: VozaMFC от Август 26, 2010, 16:56



Название: Обработка сигналов между окнами в плагинах
Отправлено: VozaMFC от Август 26, 2010, 16:56
Сушу голову как это реализовать.
Допустим есть многодокументное приложение, которое подгружает свои плагины.
в плагинах хранятся окна, а каким образом можно наладить между ними "общение",
может кто делал такое?


Название: Re: Обработка сигналов между окнами в плагинах
Отправлено: BRE от Август 26, 2010, 17:11
Сушу голову как это реализовать.
Допустим есть многодокументное приложение, которое подгружает свои плагины.
в плагинах хранятся окна, а каким образом можно наладить между ними "общение",
может кто делал такое?
Что значит "в плагинах хранятся окна"?
Общение можно наладить так же как и всегда между объектами, например, используя сигнал-слот.
Разберись с плагинами, посмотри как это реализовано в том же QtCreator. Кстати, на форуме была ссылка на документацию по написанию своих плагинов для QtCreator.


Название: Re: Обработка сигналов между окнами в плагинах
Отправлено: lit-uriy от Август 26, 2010, 20:55
может подразумевается, что плагины почти ничего не знают друг о друге.

П.С.
Хотя гадать можно долго.


Название: Re: Обработка сигналов между окнами в плагинах
Отправлено: VozaMFC от Август 27, 2010, 08:21
Приложение автоматически подхватывает плагины из определенной папки при запуске, в меню основного
приложения соотвественно появляются пункты конкретного плагина.
Интерфейс обьектов-плагинов одынаков. Плагин получает указатель QMdiArea и помещает туда окно.
Теперь интерес такой, как можно наладить обмен информации между окнами(Одно окно из одного плагина, пустило сигнал второму окну другому плагина, типа обновись)?

Такое может сработать:

сигнал окна1 пошло на слот окна2 и окна3

сигнал окна2 пошло на слот окна1 и окна3

сигнал окна3 пошло на слот окна1 и окна2

И чтобы присоединить между ними  сигнал и слоты, окнам нужно наследоватся от "общего" предка?
Если можно, поверните на путь праведный :)


Название: Re: Обработка сигналов между окнами в плагинах
Отправлено: VozaMFC от Август 27, 2010, 08:33
А еще, тут два уровня получается:
- уровень плагинов, при запуске приложения они подхватились приложением, появились у основном меню приложения,
на них  поцепились обработчики, при срабатывании которых помещается окно из плагина в "контейнер"(QMdiArea) и все...
- второй уровень, окна из плагинов...они наследники QMainWindow, попадают они примерно так:
--- на пункт меню основного приложения поцепил  слот из плагина
--- pI интерфес главного приложения, через него получаю указатель QMdiArea*
--- и пихаю туда окно из плагина.
QMdiArea* mdiArea = pI->mdiAreaWindows();
QMdiSubWindow* pSubWindow = mdiArea->addSubWindow(окно);       
pSubWindow->setAttribute(Qt::WA_DeleteOnClose);
pSubWindow->setWindowTitle(titleWindow);
pSubWindow->show();
--- все оно в свободном плавании...