Название: Проясните мысли о сигналах! Отправлено: 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(...)
|