PavelK
@PavelK

Сигналы между плагинами

Добрый день.
Встраиваю в приложение возможность подключения плагинов.

Возник вопрос, как красиво реализовать для плагинов:
1. Возможность коннекта своего сигнала со слотом другого плагина
2. Возможность коннекта своего слота с сигналом другого плагина
3. Из одного плагина сконнектить сигнал второго плагина и слот третьего плагина.
С учётом того, что материнское приложение не знает ничего о сигналах/слотах своих плагинов, кроме заранее заданных в "интерфейсе".
Оно просто вызывает свои сигналы, в плагинах должна произойти реакция на них.
С коннектом событий между приложением-плагином проблем нет, а вот с плагин-плагин есть.

Как я думал:

Или создать отдельный класс, через который плагины бы могли объявить свои слоты/сигналы и соединить кто как хочет по строковым названиям, но в Qt нельзя соединить слот и сигнал который заранее не определён в классе.

Или всем плагинам дать список остальных плагинов и они бы стандартными средствами делали коннект.
Но так не нравится.

Или переопределить qt_metacall. Но лень.

В идеале, я вижу взаимодействие так (упрощённо) :
addAction("HelloWorld", this, slotHelloWorld ); //-- связали сигнал и свой слот
doAction("HelloWorld"); //-- где-либо сэммитили сигнал

Как сделать наиболее красиво?
  • Вопрос задан
  • 2818 просмотров
Решения вопроса 1
PavelK
@PavelK Автор вопроса
Сделал как в идеале с помощью doc.qt.digia.com/qq/qq16-dynamicqobject.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы