您可以連接到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'來標記。 –