crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> "Виртуальный" сигнал
edwardoid
  опции профиля:
сообщение 1.7.2010, 16:42
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема такая, пишу лагин, но мнр надо, чтобы плагин посылал сигнал. Проблема в том, что базовый класс виртуальный, все функции в нем виртуальны на на
signals:
virtual [имя моего плагина]([тип возвращаемого значения])
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.7.2010, 18:02
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


edwardoid, в чём всё же проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 2.7.2010, 13:21
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 1.7.2010, 19:02) *
edwardoid, в чём всё же проблема?


Проблема в том, что такая схема почему-то не работает


Uploaded with ImageShack.us
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.7.2010, 15:50
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а зачем сигналу быть виртуальным ? У него же нет тела функции
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.7.2010, 16:18
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


edwardoid, сигналы наследуются. Пример использования сигнала в классе-наследнике:
class BaseClass: public QOBject
{
...
signals:
    void baseSignal();
};

class InheritedClass: public BaseClass
{
    void someFunction()
    {
        emit baseSignal();
    }
};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 2.7.2010, 16:47
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 2.7.2010, 17:18) *
edwardoid, сигналы наследуются. Пример использования сигнала в классе-наследнике:
class BaseClass: public QOBject
{
...
signals:
    void baseSignal();
};

class InheritedClass: public BaseClass
{
    void someFunction()
    {
        emit baseSignal();
    }
};


ok, но как быть с тем, что чтобы написать плагин к своей программе все методы базового класса, должны быть виртуальными
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.7.2010, 16:51
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(edwardoid @ 2.7.2010, 20:47) *
все методы базового класса, должны быть виртуальными
ну хорошо, давай разберёмся. Во-первых, откуда такое требование?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 3.7.2010, 16:06
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 2.7.2010, 17:51) *
Цитата(edwardoid @ 2.7.2010, 20:47) *
все методы базового класса, должны быть виртуальными
ну хорошо, давай разберёмся. Во-первых, откуда такое требование?

У меня к программе различные плагины подключаются. Теперь мне нужно передавать внешнeму MainWindow. структура уведомления - струтура, об'ьявленная мною.
Как свазать сигнал с MainWindow я пока не знаю.

Кстати, это компилируется, только вот, что говорит программа:


http://pastebin.com/xS2zV6PL <- Interface
http://pastebin.com/R2KAZVrq <- h
http://pastebin.com/LzRxTsq5 <- cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.7.2010, 17:13
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


edwardoid, ты хочешь сделать, чтобы у всех плагинов был этот сигнал? Т.е. в идеале, чтобы было так:
class Plugin
{
public:
    virtual ~Plugin(){};
    virtual QString name()=0;
    virtual RET_WIDGET::RetPreview* preview(QWidget*)=0;
    virtual QWidget* settings()=0;
    virtual bool willNotify()=0;

signals:
    void notify(NOTIFICATION_INFORMATION);
};
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 4.7.2010, 0:27
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 3.7.2010, 18:13) *
edwardoid, ты хочешь сделать, чтобы у всех плагинов был этот сигнал? Т.е. в идеале, чтобы было так:
class Plugin
{
public:
    virtual ~Plugin(){};
    virtual QString name()=0;
    virtual RET_WIDGET::RetPreview* preview(QWidget*)=0;
    virtual QWidget* settings()=0;
    virtual bool willNotify()=0;

signals:
    void notify(NOTIFICATION_INFORMATION);
};
?

Да именно. В принципе могут быть плагины без уведомлений, но это проверяется bool willNotify()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


11 чел. читают эту тему (гостей: 11, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.12.2024, 19:14