Qthread & сигналы |
Здравствуйте, гость ( Вход | Регистрация )
Qthread & сигналы |
OrSOn |
8.12.2009, 15:18
Сообщение
#1
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день всем! Столкнулся со следующей проблемой... Есть программа, в которой нужно использовать потоки, причем основной поток должен обмениваться сигналами с вновь созданными. Так вот проблема примерно в следующем:
Попробовал просто все подключить коннектами, в результате thread принимает мои сигналы, но сам их испускать не может. Попробовал в начале run() вписывать exec(), в результате до нужного участка кода, разумеется, поток не доходил Попробовал способ с moveToThread(), сделал примерно следующее:
При этом поток вообще не видит испускаемых мной сигналов. Подскажите, пожалуйста, что именно делаю не так и как заставить все это дело нормально взаимодействовать. |
|
|
Andrewshkovskii |
8.12.2009, 15:21
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
У Саборга в блоге, что-то такого было, вроде это :
http://vingrad.ru/blogs/sabrog/2009/06/11/...d-myunhgauzena/ |
|
|
OrSOn |
8.12.2009, 15:28
Сообщение
#3
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
Увы, это не то( Там написано, что сигналы из run() нормально обрабатываются... А у меня основной поток их ВООБЩЕ не видит...
|
|
|
BRE |
8.12.2009, 15:31
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
OrSOn |
8.12.2009, 15:36
Сообщение
#5
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ну внутри рана у меня следующее:
setSocketFlag у меня задается в слоте, который принимает сигнал от основного потока. Т.е. ран крутится, пока основной поток не передаст сигнал. Передал, попали в функцию setThreadSocketFn(). Внутри этой функции ведется некоторая обработка, после чего написано: emit endThreadSocket( PrioritySocket ); как написано выше, в основном потоке идет привязка этого сигнала к слоту... но внутрь слота я так и не попадаю, такое ощущение, что слот не испускается...
Причина редактирования: используй тэг code
|
|
|
BRE |
8.12.2009, 15:54
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
как написано выше, в основном потоке идет привязка этого сигнала к слоту... но внутрь слота я так и не попадаю, такое ощущение, что слот не испускается... Набросал небольшой рабочий пример: Раскрывающийся текст
|
|
|
OrSOn |
8.12.2009, 15:57
Сообщение
#7
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
В том и проблема, что суть та же, но у меня не принимаются сигналы, хоть ты тресни...
|
|
|
BRE |
8.12.2009, 16:02
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
OrSOn |
8.12.2009, 16:07
Сообщение
#9
|
Студент Группа: Участник Сообщений: 46 Регистрация: 8.12.2009 Пользователь №: 1289 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да. Попробовал только что вообще просто все сделать... В своем основном потоке объявляю thread
Т.е. ТОЛЬКО запустил конструктор и вошел в ран(). Ран описан очень просто:
Так вот тот самый эмит он проходит непрерывно, но в слот socketToList( PrioritySocket ) упорно отказывается попадать. Причем если тот же сигнал испустить ВНЕ функции ран(), все отлично перехватывается... |
|
|
BRE |
8.12.2009, 16:11
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Текстовая версия | Сейчас: 3.1.2025, 6:39 |