QThread |
Здравствуйте, гость ( Вход | Регистрация )
QThread |
gpepsi |
6.10.2011, 15:05
Сообщение
#11
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
ViGOur |
6.10.2011, 15:38
Сообщение
#12
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
А ты попробуй.
Механизм сигналов и слотов асинхронный, если ты не будешь тупо всисеть в sleep в потоке, который должен получить сигнал, то значит всё долно работать. И еще, как ты думаешь в твоём коде: дойдет выполнение до th.quit(); ?Мне кажется, что дальше app.exec(); не пройдет. |
|
|
gpepsi |
6.10.2011, 17:08
Сообщение
#13
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
А ты попробуй. а что тут пробовать
код
без цикла обработки quit не прокатывает Сообщение отредактировал gpepsi - 6.10.2011, 17:08 |
|
|
ViGOur |
6.10.2011, 17:18
Сообщение
#14
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Посмотри на: QCoreApplication::processEvents, он как раз делает то, что тебе нужно...
|
|
|
silver47 |
6.10.2011, 17:40
Сообщение
#15
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Цитата
Зачем это? Что Вы делаете в цикле то? |
|
|
gpepsi |
6.10.2011, 18:45
Сообщение
#16
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
silver47 |
6.10.2011, 19:12
Сообщение
#17
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Так всетаки зачем бесконечный цикл то? Мое мнение такое - если бесконечный цикл - то наследоваться от QThread нафиг не нужно - делаем обычный QtConcurrent
|
|
|
ViGOur |
6.10.2011, 19:17
Сообщение
#18
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
processEvents не сбрасывает ничего, а просто дает отработать сигналам для данного потока.
А если цикл не просто бесконечный, с условием, тогда всё в порядке. |
|
|
gpepsi |
7.10.2011, 7:52
Сообщение
#19
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
А если цикл не просто бесконечный, с условием, тогда всё в порядке. то есть самому контролировать выход ? processEvents не сбрасывает ничего, а просто дает отработать сигналам для данного потока. руками вместо exec ? Так всетаки зачем бесконечный цикл то? Мое мнение такое - если бесконечный цикл - то наследоваться от QThread нафиг не нужно - делаем обычный QtConcurrent а чем он лучше и как решит это мою проблему ? P.S. и кстати как быть с сигналами. Если объект создан в главном потоке, то и сигналы в главном потоке будут обрабатываться, а если объект создан в run ? |
|
|
ViGOur |
7.10.2011, 8:34
Сообщение
#20
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Цитата то есть самому контролировать выход ? Да, именно так. у тебя же цикл не с вечным sleep'ом, вот и вызывай на каждой его итерации processEvents. А он в свою очередь будет обрабатывать сигналы и вызывать что нужно...Цитата руками вместо exec ? Да. Выше уже описал...Цитата P.S. и кстати как быть с сигналами. Если объект создан в главном потоке, то и сигналы в главном потоке будут обрабатываться, а если объект создан в run ? Запомни, в каком потоке создан объек, в том он и обрабатывается. Если тебя это не устраивает, то после создания объекта ты его можешь передать в другой поток с помощью: void QObject::moveToThread ( QThread * targetThread )
|
|
|
Текстовая версия | Сейчас: 29.3.2024, 12:38 |