Как запустить QThread чтобы он не вешал GUI? |
Здравствуйте, гость ( Вход | Регистрация )
Как запустить QThread чтобы он не вешал GUI? |
flareguner |
8.3.2010, 17:53
Сообщение
#1
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я пробовал сделать так, как в примере в документации. Унаследовал QThread в классе и переопределил функцию void run(). Затем в другом приложении создал объект этого своего класса и запускаю его. GUI вешается и почти не отзывается. Большое спасибо тем, кто ответит.
Чуть не забыл: в классе наследующем поток мы ждем выполнения QProcess с waitForFinished( -1 ). |
|
|
BRE |
8.3.2010, 22:28
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
А покажи код, который запускает этот поток + как он соединяется со слотами. Короче всю обвязку.
|
|
|
flareguner |
8.3.2010, 22:34
Сообщение
#3
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
А покажи код, который запускает этот поток + как он соединяется со слотами. Короче всю обвязку. Вот Проверь управление доходит до строчки идущей за waitForFinished(), если да, то скажи мне какая максимальная цифра в size_arguments. Возможно это глупое предположение, но возможно программа слишком быстро запускается и завершается, настолько быстро, что долгий цикл:
Просто напросто "зафлуживает" GUI'шный поток сообщениями, на каждое из которых выполняется какая-нибудь не быстрая операция. Цикл завершается не быстро. Состоир из 1-2-3 итераций. Процесс конвертирования видео тоже не может проходить мгновенно. Я пробовал запускать такой же процесс вне треда и без ожидания завершения, и он не вешал GUI, хотя гуй парсил полностью вывод менкодера. |
|
|
Текстовая версия | Сейчас: 26.11.2024, 17:50 |