QThread |
Здравствуйте, гость ( Вход | Регистрация )
QThread |
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. Поддержка потоков в Qt 2. Сигналы и слоты Там не так много букв как кажется, и как показывает практика как хотелось бы, и это базовые знания, которые нужно знать каждому, кто работает с Qt и использует потоки. Ну а без сигналов тут разумеется никуда. И если после прочтения у тебя возникнут вопросы, то задавай их, но я думаю они сами по себе отпадут. QtConcurrent, там тоде описан... |
|
|
Текстовая версия | Сейчас: 20.4.2024, 6:14 |