Посылка сигнала из дополнительного потока в главный |
Здравствуйте, гость ( Вход | Регистрация )
Посылка сигнала из дополнительного потока в главный |
AD |
4.6.2009, 10:05
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Есть дополнительный поток, в котором происходит циклическое перемещение прожектора в одной из плоскостей. В этом потоке есть переменная int number_rotate, которая отвечает за количество вращений в цикле. После каждого перемещения она уменьшает свое значение.
Как мне корректно отправить сигнал о том, что переменная изменила значение? И как в основном потоке его поймать?
- вот строчка изменения значения переменной.
|
|
|
SABROG |
4.6.2009, 10:37
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Законнектить сигнал из потока со слотом из главного потока как Qt::QueuedConnection. Потом emit этого сигнала с твоим параметром.
Правда я не помню, connect вроде бы делать надо в run(), а не в главном потоке. Ну и без exec() в конце run() не обойтись. Может еще поможет QMetaObject::invoke(), чтобы поставить сигнал в очередь насильно. |
|
|
igor_bogomolov |
4.6.2009, 11:00
Сообщение
#3
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Правда я не помню, connect вроде бы делать надо в run(), а не в главном потоке. Ну и без exec() в конце run() не обойтись. Может еще поможет QMetaObject::invoke(), чтобы поставить сигнал в очередь насильно. exec() в данном случае не нужен. Да и коннетк делать там, где создается экземпляр класса HorizontalRotation.Законнектить сигнал из потока со слотом из главного потока как Qt::QueuedConnection. Потом emit этого сигнала с твоим параметром. Более чем достаточно. Qt::QueuedConnection необязателен, он по идее должен выставиться по умолчанию.
|
|
|
AD |
4.6.2009, 11:03
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Хочу уточнить:
сигнал определить в дополнительном потоке, а слот создать в главном? Emit делать в слоте главного потока? А коннект в функции run дополнительного? Все так? |
|
|
igor_bogomolov |
4.6.2009, 11:18
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
сигнал определить в дополнительном потоке, а слот создать в главном? Emit делать в слоте главного потока? А коннект в функции run дополнительного? Все так? Нет. псевдокод
Сообщение отредактировал igor_bogomolov - 4.6.2009, 11:29 |
|
|
Litkevich Yuriy |
4.6.2009, 14:46
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 15:45 |