Название: QThread в Qt 3.3.4 Отправлено: noi от Октябрь 12, 2009, 00:10 1. Требуется сделать поток, обрабатывающий очередь сообщений от gui потока. Подскажите пожалуйста, какими средствами Qt3 это можно сделать.
Для Qt4 вроде все понятно: там QThread является наследником QObject, имеет метод exec и можно задействовать механизм сигналов слотов. 2. Тут у меня возник попутный вопрос по поводу QCoreApplication::postEvent уже для Qt4: Если использовать postEvent для передачи сообщения из главного потока во второстепенный, то приемником должен быть объект QObject, объявленный в функции run второстепенного потока? Я правильно понимаю? Название: Re: QThread в Qt 3.3.4 Отправлено: pastor от Октябрь 12, 2009, 00:34 Никто не мешает воспользоваться множественным наследованием:
Код
Название: Re: QThread в Qt 3.3.4 Отправлено: noi от Октябрь 12, 2009, 15:46 Спасибо, но все же не понятно: В документации Qt4 указано, что механизм слотов - сигналов может быть использован для связи между объектами в разных потоках, а в документации на Qt3 ничего такого не сказано! И если так, то если я правильно понял, класс должен также наследовать еще и от qeventloop, чтобы запустить exec в функции run?
А что насчет второго моего вопроса? Название: Re: QThread в Qt 3.3.4 Отправлено: Steven_Orko от Октябрь 12, 2009, 16:13 Спасибо, но все же не понятно: В документации Qt4 указано, что механизм слотов - сигналов может быть использован для связи между объектами в разных потоках, а в документации на Qt3 ничего такого не сказано! И если так, то если я правильно понял, класс должен также наследовать еще и от qeventloop, чтобы запустить exec в функции run? Правильно, там и не будет написано. Механизм сигналов-слотов между потоками появился только в Qt4. В Qt3 вообще поддержки такого нет.Опиши задачу. Потому, что трудно ответить на вопросы, не отправив читать Бланшета и документацию на Qt3. Зачем создавать отдельный поток для обработки GUI-сообщений, если это и так делается обычно в основном? Название: Re: QThread в Qt 3.3.4 Отправлено: noi от Октябрь 12, 2009, 20:59 Задача заключается в следующем:
В отдельном потоке производится выполнение функции int longOperation( int par1, int par2 ). Пользователь в GUI вводит значение par1 и par2, после чего, по нажатию на кнопку "DO" должна начать работу функция longOperation, в которую передадутся введенные пользователем значения. Возвращаемое значение функции посылается (postEvent) в GUI для отображения. Надо сделать так, чтобы пользователь не ждал завершения предыдущего вызова функции, а мог сразу же выставить новые значения и жать на "DO". Т.е. формировать очередь заданий. Результаты работы функции для каждого нажатия "DO" должны отображаться по мере выполнения. Как реализовать такой механизм на Qt3? Спасибо за терпение)) |