Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
gpepsi |
7.10.2011, 9:00
Сообщение
#21
|
|
Студент ![]() Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0
|
ViGOur, а если я создаю поток только для вычитывания и разбора данных. Далее я хочу разобранные данные отдать в GUI для отрисовки.
Получается, что в run я должен это все делать, а отдавать данные через сигнал. Если объект создан в главном потоке, то и сигнал будет обработан в главном потоке, что позволит отрисовать их в GUI. Причем processEvents будет не нужен, т.к. QCoreApplication::exec обрабатывает свой цикл событий. Причем в данно случае я могу объекту потоку послать сигнал, который будет обработан в главном потоке. Я правильно размышляю ? Единственное остался вопрос - зачем тогда вообще создавать объекты в run как в примере если для GUI их все-равно придется отдавать в главный поток, что за нас делает сигнал Кстати, если я не использую потоки, а только сигналы, например, вычитывая данные из сокета вся обработка будет в главном потоке, то приведет к подвисанию GUI если данных очень много P.S. А чем тогда QtConcurrent полезен ? Сообщение отредактировал gpepsi - 7.10.2011, 9:02 |
|
|
|
|
ViGOur |
7.10.2011, 9:10
Сообщение
#22
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
Чтобы было меньше вопросов, предлагаю тебе почитать вот что:
1. Link 2. Link Там не так много букв как кажется, и как показывает практика как хотелось бы, и это базовые знания, которые нужно знать каждому, кто работает с Qt и использует потоки. Ну а без сигналов тут разумеется никуда. И если после прочтения у тебя возникнут вопросы, то задавай их, но я думаю они сами по себе отпадут. QtConcurrent, там тоде описан... |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 1.1.2026, 17:45 |