![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
flareguner |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я пробовал сделать так, как в примере в документации. Унаследовал QThread в классе и переопределил функцию void run(). Затем в другом приложении создал объект этого своего класса и запускаю его. GUI вешается и почти не отзывается. Большое спасибо тем, кто ответит.
Чуть не забыл: в классе наследующем поток мы ждем выполнения QProcess с waitForFinished( -1 ). |
|
|
SABROG |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Я конечно могу задавать наводящие вопросы, типа "где создается QProcess?", но быстрее будет, если ты выложишь исходники.
|
|
|
flareguner |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я конечно могу задавать наводящие вопросы, типа "где создается QProcess?", но быстрее будет, если ты выложишь исходники. src Из defines.h там только модифицированный дебаг. В используем мы его так:
|
|
|
DEADHUNT |
![]()
Сообщение
#4
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
QProcess::waitForStarted добавь и посмотри что от тебе вернёт.
|
|
|
SABROG |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Не увидел ничего такого, что бы могло вешать GUI. Посмотри аналогичный вариант Проверь работает ли он у тебя или сравни код. Qt в консоль никаких сообщений не пишет?
|
|
|
flareguner |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
QProcess::waitForStarted добавь и посмотри что от тебе вернёт. Подробнее, куда добавить? Может вы имели в виду waitForStarted для объекта process? Не увидел ничего такого, что бы могло вешать GUI. Посмотри аналогичный вариант Проверь работает ли он у тебя или сравни код. Qt в консоль никаких сообщений не пишет? Посмотрю. Qt ничем не плюется. |
|
|
DEADHUNT |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
flareguner |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Не увидел ничего такого, что бы могло вешать GUI. Посмотри аналогичный вариант Проверь работает ли он у тебя или сравни код. Qt в консоль никаких сообщений не пишет? Мой код отличался тем, что небыло конструктора и деструктора. Их дописание ничего не изменило( Если это интересно, то в треде должен запускаться mencoder. |
|
|
SABROG |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Подробнее, куда добавить? Может вы имели в виду waitForStarted для объекта process? да для process, прежде чем ждать его завершения, надо дождаться его запуска(и проверить, запускается ли он вообще). Не будет разницы никакой:
После вызова start() QProcess переходит в состояние Starting. Если даже это состояние поменялось на NotRunning в следтвии ошибки, то waitForFinished() об этом сразу увидит, если же мы всё еще в состоянии Starting, то он сам сам вызывает waitForStarted(). Ну и затем waitForFinished(), если всё удачно. Мой код отличался тем, что небыло конструктора и деструктора. Их дописание ничего не изменило( Если это интересно, то в треде должен запускаться mencoder. Проверь с какой-нибудь другой утилитой. Без QThread вообще код работал или всё написано с нуля без проверок? Сообщение отредактировал SABROG - 8.3.2010, 22:07 |
|
|
flareguner |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Подробнее, куда добавить? Может вы имели в виду waitForStarted для объекта process? да для process, прежде чем ждать его завершения, надо дождаться его запуска(и проверить, запускается ли он вообще). Добавил его между start и waitForFinished. Возвращает истину. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 6:57 |