您可以连接到readyRead()信号,因此无论何时需要读取一些数据,您都会继续阅读并显示,而无需等待过程完成。这意味着在代码方面如下:
class Foo : public QObject
{
Q_OBJECT
public:
explicit Foo::Foo(QObject parent = Q_NULLPTR)
: QObject(parent)
{
...
connect(myProcess, SIGNAL(readyRead()), SLOT(handleReadyRead()));
connect(myProcess, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(handleFinished(int, QProcess::ExitStatus)));
connect(myProcess, SIGNAL(error(QProcess::ProcessError)), SLOT(handleError(QProcess::ProcessError)));
myProcess.start("test.bat");
...
}
public slots:
void Foo::handleReadyRead()
{
qDebug() << myProcess.readAll();
}
void Foo::handleFinished(int, QProcess::ExitStatus)
{
// Handle finished
}
void Foo::handleError(QProcess::ProcessError)
{
// Handle error
}
private:
QProcess myProcess;
}
免责声明:认为这是伪代码,因为我还没有建立,但它应该表现出概念来使用。
@AndrewMedico:请不要删除重要的标签。 – lpapp
我不同意他们是“重要的”。问题不在于关于*'qt-core'或'qt-signals'。如果问题中涉及的每个概念的标签及其答案都是合适的,那么实际上**每个** Qt问题都可以用'qt-core'和'qt-signals'来标记。 –