如何在qt4(信号/插槽)中监视QProcess finished()

时间:2010-11-17 01:38:09

标签: c++ qt4 signals-slots

看起来他们在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()));

我的stdout / stderr SIGNAL / SLOT工作得很好,但我似乎找不到一个好的解决方案。我不能在循环中执行任何操作或proc-> waitforfinished因为我需要不断更新到我的UI。我怎么能这样做?

我的错误:Object :: connect:没有这样的信号QProcess :: finished(int exitcode)

由于

以下是QProcess的SIGNALS ....

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 个答案:

答案 0 :(得分:2)

替换您的代码行

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

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

当连接信号和插槽没有给出参数名称时。

答案 1 :(得分:0)

我觉得我在这里遗漏了一些东西,但我有几分钟......:)

4.x中完成的信号出了什么问题?它只是根据我所知道的内容添加了一些参数。

4.5:

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

4.0:

void QProcess::finished( int exitCode )

更改您的广告位以获得正确的参数,如果您不需要,请忽略它们。

至于需要状态更新,在一个单独的线程中启动新的QProcess并让该线程进行等待。