Название: Получить сигнал из плагина Отправлено: QCasper от Февраль 09, 2007, 09:40 Создаю приложение с плагинами стандартным кютешным подходом, как в книжке у Бланшета. То есть само приложение ничего не знает о плагине кроме его интерфейсного класса, который полностью абстрактный. Мне надо чтобы, приложение как-то узнавало, что в плагине произошли изменение, то есть надо как-то так сделать, чтобы я из плагина эмитил сигнал, который каким-то образом доходил до приложения. Вопрос как? Есть ли стандартные пути?
Название: Получить сигнал из плагина Отправлено: goer от Февраль 09, 2007, 11:19 Определи сигнал как обычный pure virtual член в асбтрактном классе. А в реализации уже сделай его сигналом (засунь его в секцию signals)
Название: Получить сигнал из плагина Отправлено: QCasper от Февраль 09, 2007, 11:49 Цитата: "goer" Определи сигнал как обычный pure virtual член в асбтрактном классе. А в реализации уже сделай его сигналом (засунь его в секцию signals) хорошо сделал, у меня в интерфейсе теперь есть void settingsChaged() = 0, который потом в реализации плагина прописан в секции signals. Но вот где проблема: указатель на объект класса плагина то у меня получается вот так: Код: IPlugin *interface = qobject_cast<IPlugin*>(loader.instance()); потом я собираюсь законнектить: Код: connect(interface, SIGNAL(settingsChanged()), this, SLOT(changeSettings())); и тут мне компилятор говорит, вобщем-то я с ним абсолютно согласен, что IPlugin далеко не QObject, и мол нельзя так законнектить. добавлено спустя 17 минут: Заработало. Сделал вот так: Код: connect(loader.instance(), SIGNAL(settingsChanged()), this, SLOT(changeSettings())); Название: Получить сигнал из плагина Отправлено: Dendy от Февраль 09, 2007, 14:22 Архи неверньІй подход.
Нужно делать так: Код: class MyObjectInterface : public QObject И оперировать классами MyObjectInterface. Название: Получить сигнал из плагина Отправлено: QCasper от Февраль 09, 2007, 14:58 А в чем минус того подхода?
Название: Получить сигнал из плагина Отправлено: Lion от Февраль 09, 2007, 22:37 А я делаю вот так:
Код: class IPlugin { Код: class MyPlugin : |