Russian Qt Forum

Qt => Вопросы новичков => Тема начата: StatuS74 от Август 09, 2011, 07:03



Название: слоты и сигналы
Отправлено: StatuS74 от Август 09, 2011, 07:03
Возник вопрос. есть класс в котором есть метод  который запускаю в потом. метод в процессе работы проверяет условия и надо чтобы  при определенных  условиях выводилось сообщение MessageBox. Понял что надо использовать сигналы. но  технологию не совсем понял. в книге говарится для испускания сигнала делается так connect(отправитель,SIgnal(сигнал),получатель,slot(слот)).
подскажите пожалусто как отправить сигнал что бы вывелось сообщения.


Название: Re: слоты и сигналы
Отправлено: merke от Август 09, 2011, 07:41
в своем классе декларируешь сигнал:

Код:
void mySignal();

теперь когда тебе нужно испустить сигнал, пишешь
Код:
emit mySignal();

а также у тебя должен быть слот с твоим месагбоксом, допустим:

Код:
vodi myClass::showMess()
{
  ..........Выводишь месагбокс............
}
теперь делаешь связку твоего сигнала и слота с месагбоксов:

Код:
connect(myClass, SIGNAL(mySignal()), this, SLOT(showMess()));

и получается следующее: когда испускается сигнал mySignal вызывается слот showMess() и показывается твой месагбокс. и везге где тебе нужно показать твоё сообщение делай
Код:
emit mySignal();


Название: Re: слоты и сигналы
Отправлено: StatuS74 от Август 09, 2011, 07:58
а мне надо передать  ещё переменную. типо что бы вывелось Ошибка бля бля для сериника serial
serial QString

что то тпио
connect(myClass, SIGNAL(mySignal(serial)), this, SLOT(showMess()))


Название: Re: слоты и сигналы
Отправлено: StatuS74 от Август 09, 2011, 08:20
и в каком месте программы я связку должен сделать  ??


Название: Re: слоты и сигналы
Отправлено: Странник от Август 09, 2011, 09:14
почитайте повнимательнее, примеры посмотрите. вопрос фундаментальный, но слишком простой, чтобы здесь на него отвечать.


Название: Re: слоты и сигналы
Отправлено: LisandreL от Август 09, 2011, 11:27
а мне надо передать  ещё переменную. типо что бы вывелось Ошибка бля бля для сериника serial
serial QString
connect(myClass, SIGNAL(mySignal(QString)), this, SLOT(showMess(QString)), Qt::QueuedConnection);
В объявлении соответственно тоже добавить аргумент и в сигнал и в слот.