Как я могу контролировать QProcess finish () в qt4 (Сигнал / Слот) - PullRequest
0 голосов
/ 17 ноября 2010

Похоже, что это было решение для этого в qt3, но я не могу найти одно для qt4 (все, что я использовал, изумляясь, я видел решения для qt3).

connect(r, SIGNAL(readyReadStandardError()), this, SLOT(updateError()));
connect(r, SIGNAL(readyReadStandardOutput()), this, SLOT(updateText()));
connect(r, SIGNAL(finished(int exitcode)), this, SLOT(updateExit()));

У меня есть стандартный вывод/ stderr SIGNAL / SLOT работает нормально, но я не могу найти хорошее решение для готовой.Я ничего не могу сделать в цикле или proc-> waitforfinished, потому что мне нужно постоянное обновление моего интерфейса.Как я могу это сделать?

Моя ошибка: Object :: connect: Нет такого сигнала QProcess :: done (int exitcode)

Спасибо

Ниже приведены СИГНАЛЫ для QProcess....

Signals
void    error ( QProcess::ProcessError error )
void    finished ( int exitCode, QProcess::ExitStatus exitStatus )
void    readyReadStandardError ()
void    readyReadStandardOutput ()
void    started ()
void    stateChanged ( QProcess::ProcessState newState )

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

замените строку кода

connect(r, SIGNAL(finished(int exitcode)), this, SLOT(updateExit()));

с

connect(r, SIGNAL(finished(int)), this, SLOT(updateExit()));

Когда сигналы подключения и слоты не дают имя параметра.

0 голосов
/ 17 ноября 2010

Мне кажется, что я что-то здесь упускаю, но у меня есть несколько минут ... :)

Что не так с готовым сигналом в 4.x? Это просто добавляет несколько параметров к тому, что вы имеете из того, что я могу сказать.

4,5

void QProcess::finished( int exitCode, QProcess::ExitStatus exitStatus )

4,0

void QProcess::finished( int exitCode )

Измените свой слот, чтобы иметь правильные аргументы, и просто игнорируйте их, если они вам не нужны.

Что касается необходимости обновления статуса, запустите новый QProcess в отдельном потоке и дайте этому потоку выполнить ожидание.

...