crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QProcess сам завершает прогу
RazrFalcon
  опции профиля:
сообщение 7.6.2011, 18:56
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


QProcess load;
load.start(path,imagesPaths);
load.waitForFinished();


и через ремдомное время прога вырубается с ошибкой "QProcess: Destroyed while process is still running."

Сообщение отредактировал RazrFalcon - 7.6.2011, 19:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.6.2011, 19:34
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а где этот кусок кода находится и что расположено до него ? )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.6.2011, 20:22
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Это plasma-applet для KDE.
На него сбрасываются файл, Dran&Drop, и он запускает нужную мне прогу с аргументами в виде файлов которые я сбросил.
QProcess ... и тд. находится в самом сигнале:
void Applet::dropEvent(QGraphicsSceneDragDropEvent *e)


Сообщение отредактировал RazrFalcon - 7.6.2011, 20:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.6.2011, 20:25
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а ничего, что объект - локальный ? Или это неважно ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.6.2011, 20:40
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


RazrFalcon, надо смотреть доку по QProcess, а именно умалчиваемый таймаут.
я такое сообщение получал, когда при ограниченном таймауте прога во время не откликалась.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.6.2011, 21:34
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(Алексей1153 @ 7.6.2011, 20:25) *
а ничего, что объект - локальный ? Или это неважно ?
Ничего не понял... :huh:

Цитата
надо смотреть доку по QProcess, а именно умалчиваемый таймаут.
А по конкретней, я вроде просмотрел все, но ничего не увидел нужного.
Я пробовал:
load.waitForFinished(10000000);
Но толку 0.

Сообщение отредактировал RazrFalcon - 7.6.2011, 21:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 8.6.2011, 7:22
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


А это у тебя релиз или дебаг запускается ? Что-то смутно припоминаю -вроде такое сообщение несколько раз выскакивало, когда точка останова была установлена в функции, расположенной h файле. Перенёс я тогда тот код в cpp - и точка стала нормально ставиться, отладка нормально запускаться

Если, конечно, речь про Qt Creator

Сообщение отредактировал Алексей1153 - 8.6.2011, 7:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 8.6.2011, 10:52
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 7.6.2011, 21:34) *
Я пробовал:
load.waitForFinished(10000000);
Но толку 0.

естественно, посмотри доку по waitForFinished(), передавать нужно -1 если ты хочешь ждать пока процесс не завершится сам

Сообщение отредактировал DIMEDROLL - 8.6.2011, 10:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 8.6.2011, 14:39
Сообщение #9


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


DIMEDROLL, спасибо! Там в самом конце доки это написано, я даже не обратил внимания. Сейчас нормально пашет, вроде.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 9.6.2011, 22:34
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Памятка для тех, кто будет тоже писать апплет для плазмы, запускающий внешнюю прогу.

Запускать прогу НУЖНО через:
bool QProcess::startDetached ( const QString & program, const QStringList & arguments ) [static]
Тогда не будет проблем со случайными заверениями.
И самое главное: если стартовать внешнею прогу просто через:
void QProcess::start ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite )
То, если апплет будет находится, в момент запуска, на панели - панель тоже зависнет. Что не есть хорошо. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 13:49