crossplatform.ru

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


  Ответ в Создание пользовательских сигналов
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
void* Дата 10.7.2008, 13:45
  ничего сложного:
чтобы написать свой сигнал, достаточно объявить функцию-сигнал в поле класса
signals:
           void mysignal(); //простой сигнал без параметров

либо так:
Q_SIGNALS:
          void mysignal(); //эквивалентно предыдущему примеру

и когда нужно, эммитишь сигнал:
emit mysignal();

не забывай, что тебе не нужно реализовывать этот сигнал как функцию, достаточно только объвить, реализует его за тебя moc, который сделает нечто наподобие:
void MyClass::mysignal() {
                      QMetaObject::activate(this, &staticMetaObject, 0, 0);
}

также помни, что тип функции-сигнала всегда должен быть void, то есть сигнал не должен что-либо возвращать
если тебе нужно с параметрами (их может быть сколько угодно), то фактически также само, только добавить нужные типы:
signals:
           void mysignal(int, const QString&); //теперь этот сигнал с двумя параметрами - типа int и типа const QString&

соответственно эммитить его надо примерно так:
emit mysignal(100, "word");

надеюсь теперь понятно?
AD Дата 10.7.2008, 12:55
  Насколько я понял из всего моего полугодового программирования на Qt, то сигнал - это функция, указывающая реакцию, на которую запускается функция-слот.
Так вопрос в том, можете доступно объяснить: чем надо руководствоваться, создавая свои собственные сигналы? Не очень понятно, какое количество параметров можно задавать, как вообще Qt понимает эту реакцию? Про слоты все в общем-то понятно!
В книге про это не указано подробно!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 7.5.2024, 15:11