Russian Qt Forum
Май 15, 2024, 14:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проясните мысли о сигналах!  (Прочитано 7283 раз)
andrek
Гость
« : Август 11, 2005, 06:31 »

Всем привет!
Занимаюсь с Qt совсем недавно, читаю документация и паралельно пытаюсь доработать небольшой проект qfaxreader из sourceforge.net (если кому интересно), это программа для просмотра факсов, я добавил в нее найстройку и прием факсов, это работает.

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

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

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

Думаю что решение проблемы очень простое не немогу понять где грабли.
Записан
Dair
Гость
« Ответ #1 : Август 11, 2005, 12:20 »

например:

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

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

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

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


Я бы сделал сложнее, впрочем: в индикаторе завел бы различные состояния (On, Off, Blinking) и слотами их переключал друг между другом.
Записан
andrek
Гость
« Ответ #2 : Август 11, 2005, 12:42 »

спасибо за ответ!
согласен что можно сделать посложнее, но мне хотябы нужен минимальный функционал.

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

undefined reference to `vtable for CFaxRun'
Записан
andrek
Гость
« Ответ #3 : Август 11, 2005, 12:50 »

я думаю дело в том что QThread не наследуется от QObject.
Записан
Dair
Гость
« Ответ #4 : Август 11, 2005, 12:56 »

ах да, точно... :-)

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

Кстати, а зачем их мешать между собой?.. Может, проще избавиться от QThread вообще и пользоваться исключительно QProcess'ом?..
Записан
andrek
Гость
« Ответ #5 : Август 11, 2005, 14:33 »

Я вот тоже подумываю об избавлении QThread,
просто схватился сразу по аналогии с системным программированием.
Записан
dilshodm
Новичок

Offline Offline

Сообщений: 18


Просмотр профиля
« Ответ #6 : Август 12, 2005, 05:52 »

А если все же надо отправлять событие из другого потока (QThread), то смотреть в сторону QApplication::postEvent(...)
Записан

С уважением,
Dilshod
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.