Russian Qt Forum

Qt => Общие вопросы => Тема начата: andrek от Август 11, 2005, 06:31



Название: Проясните мысли о сигналах!
Отправлено: andrek от Август 11, 2005, 06:31
Всем привет!
Занимаюсь с Qt совсем недавно, читаю документация и паралельно пытаюсь доработать небольшой проект qfaxreader из sourceforge.net (если кому интересно), это программа для просмотра факсов, я добавил в нее найстройку и прием факсов, это работает.

Далее, есть у меня в основном классе CMainWindow cтатусбар, и захотелось мне добавить в него информацию для пользователя в картинке.
Сделал это через самодельный сигнал, все работает, загорается красная лампочка при нажатии кнопки "факс на автомате", зеленая при нажатии на кнопку "прием факса".

Само действие (прием факса и включение на авто) выполняю через QThread и запуск Qprocess - это тоже работает.

Так вот сама проблема:
Хочу сделать чтобы при самом процессе приема факса у меня индикатор моргал,
но не могу вызвать в thread сигнал из СMainWindow ??

Думаю что решение проблемы очень простое не немогу понять где грабли.


Название: Проясните мысли о сигналах!
Отправлено: Dair от Август 11, 2005, 12:20
например:

в классе, порожденном от QThread (пусть будет FaxThread) сделать два сигнала, что-нить типа started() и finished().
finished() пробросить из QProcess::processExited()

Индикатору сделать слоты startBlinking() и stopBlinking() (например).

При создании объекта класса FaxThread законнектить сигналы на слоты.

Всё должно работать.


Я бы сделал сложнее, впрочем: в индикаторе завел бы различные состояния (On, Off, Blinking) и слотами их переключал друг между другом.


Название: Проясните мысли о сигналах!
Отправлено: andrek от Август 11, 2005, 12:42
спасибо за ответ!
согласен что можно сделать посложнее, но мне хотябы нужен минимальный функционал.

у меня в классе FaxThread не получается создать signals, делаю все как в документации.
ошибка уже при линковке:

undefined reference to `vtable for CFaxRun'


Название: Проясните мысли о сигналах!
Отправлено: andrek от Август 11, 2005, 12:50
я думаю дело в том что QThread не наследуется от QObject.


Название: Проясните мысли о сигналах!
Отправлено: Dair от Август 11, 2005, 12:56
ах да, точно... :-)

значит, не в FaxThread, а в FaxProcess ;-)

Кстати, а зачем их мешать между собой?.. Может, проще избавиться от QThread вообще и пользоваться исключительно QProcess'ом?..


Название: Проясните мысли о сигналах!
Отправлено: andrek от Август 11, 2005, 14:33
Я вот тоже подумываю об избавлении QThread,
просто схватился сразу по аналогии с системным программированием.


Название: Проясните мысли о сигналах!
Отправлено: dilshodm от Август 12, 2005, 05:52
А если все же надо отправлять событие из другого потока (QThread), то смотреть в сторону QApplication::postEvent(...)