Russian Qt Forum
Сентябрь 30, 2024, 08:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Не могу получить сигнал из плагина  (Прочитано 2645 раз)
Hrundel
Гость
« : Август 23, 2013, 23:02 »

Всем привет,

хочу воспользоваться сигналом из плагина. Написал в интерфейс:

Код:
    signals:
        virtual void ready(int digit) = 0;

В плагин:

Код:
signals:
        void ready(int digit);

Компилятор успешно поглотил.

потом добавил строку:

Код:
connect(state,SIGNAL(ready(int)),this,SLOT(changeStateAutomatical(int)));

Вызвалась ошибка. Попробовал конвертнуть обратно приведением qobject_cast<QObject*>(state)
Опять пишет ошибку.

Вопрос: как решить проблему? как получать сигнал из плагина?

Всем спасибо.
« Последнее редактирование: Август 24, 2013, 10:28 от Hrundel » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Август 23, 2013, 23:58 »

Код:
signals:
        virtual void ready(int digit) = 0;

может просто:
Код:
signals:
        void ready(int digit);
? Улыбающийся
Записан

Hrundel
Гость
« Ответ #2 : Август 24, 2013, 02:35 »

Речь идет об интерфейсе = абстрактный класс! Там все функции должны быть только виртуальными.
Вопрос лишь в том - правомочно ли использование сигналов в плагинах и в абстрактных классах?
Если да - то как написать правильно линкование со слотом?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Август 24, 2013, 09:51 »

http://studff.ru/blog/programming/138.html  Подмигивающий

Цитировать
Вызвалась ошибка. Попробовал конвертнуть обратно приведением qobject_cast<QObject*>(state)
Опять пишет ошибку.
И кст, что за ошибка такая?
« Последнее редактирование: Август 24, 2013, 09:56 от gil9red » Записан

Hrundel
Гость
« Ответ #4 : Август 24, 2013, 10:28 »

Во-первых, конечно,  большое спасибо за помощь. Уже сам перед сном пришел к решению. Но сравнить с другим проектом тоже полезно.

Отличие в моем проекте было только в том, что я делал как рекомендует Шлее, а именно - наследовался от  QObject не в самом интерфейсе, а в плагине.
И это не есть хорошо. Так как получается, что плагин вроде как знает о существовании сигналов, а инетерфейс - нет.
Проблема решилась в один сек тупым переносом наследования из плагина в интерфейс. И сигнал заработал!

gil9red, еще раз спасибо.
« Последнее редактирование: Август 24, 2013, 10:30 от Hrundel » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.157 секунд. Запросов: 23.