![]() |
|
|
![]()
|
|
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
Привет!
В Qt (4.4.3) есть много классов, которые используют сигналы и слоты, к примеру QHttp, QFtp т.е. при вызове ф-ции не происходит блокирование, а результат выполнения принимается через сигнал-слот. Можно ли как-то изменить эти объекты, чтобы была возможность вызывать ф-ции в блокирующем режиме? например
спасибо! -------------------- A good design always pays off. |
|||
|
||||
| null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
судя по описалову, нет
|
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
всегда все ищут способ добиться асинхронности.. а тут на оборот? |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
А что ты хочешь этим добиться?
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
При необходимости решается локальным QEventLoop, но.. вы уверены, что синхронная работа будет лучше в вашем случае?
|
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Кстати вопрос вдогонку - необходимо проверить соединение с сервером - как задержать выполнение программы до получения сигнала от QNetworkReply и определения ошибки?
|
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
"задержит" как раз exec от eventloop.... чем такая схема не устраивает? 1) коннект 2) exec 3) в слотах остальные операции, придет ошибка, значит завершайся, если придет подтверждение, то прямо из слота отправляй что тебе нужно зачем что - то задерживать с помощью блокировок, если можно обрабатывать события в асинхронном режиме без дополнительных расходов? |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Да почему - устраивает. От QEventLoop надо наследоваться или тупо создание объекта в коде сгодится?
|
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Я бы добавил создание и вызов метода int exec() и в отсутствии в данном потоке других запущенных обработчиков событий. Зависит от задачи и чего ты хочешь от от локального обработчика событий (QEventLoop). если все события реализованы в объекте, который создается в рамках потока обработчика, то достаточно вызвать метод int exec (); не создаваля локальный QEventLoop... обрати внимание, что метод exec() есть в классах QThread и QCoreApplication/QApplication, возможно твою задачу можно решить и без создания объекта QEventLoop Это сообщение отредактировал(а) null56 - 20.10.2010, 00:17 |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Спасибо, я разобрался.
Сделал так: myclass.h
Дальше ловлю "тестовый" запрос по url и в случае наличия/отсутствия ошибки "Connection refused" торможу eventLoop c соответствующими параметрами. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |