У меня есть окно, в котором я хочу последовательно выполнять несколько процессов и после завершения каждого процесса хочу записать его вывод в виджет TextEdit. Мой код выглядит следующим образом:Qt - вывод всех процессов, записанных сразу в TextEdit
`
for (int i = 0; i < numberOfTests; i++){
ui->textEdit->append(QString("Running test: ") + QString::number(i + 1));
this->runningToolProcess = new QProcess();
connect(this->runningToolProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(rightMessage()));
connect(this->runningToolProcess, SIGNAL(readyReadStandardError()), this, SLOT(wrongMessage()));
connect(this->runningToolProcess, SIGNAL(finished(int)), this, SLOT(processFinished()));
this->runningToolProcess->start(
QString::fromStdString("/path/to/executable"),
testParameters
);
this->runningToolProcess->waitForFinished();
}`
Функции rightMessage и wrongMessage являются следующие:
`
void RunningToolWindow::rightMessage()
{
QByteArray strdata = this->runningToolProcess->readAllStandardOutput();
ui->textEdit->setTextColor(Qt::black);
ui->textEdit->append(strdata);
}
void RunningToolWindow::wrongMessage()
{
QByteArray strdata = this->runningToolProcess->readAllStandardError();
ui->textEdit->setTextColor(Qt::red);
ui->textEdit->append(strdata);
}`
У меня есть проблема в том, что все выходные данные записываются сразу после того, как все тесты завершили выполнение, вместо того, чтобы их выходы показывались непрерывно по мере прохождения тестов. Я попытался вставить задержку после запуска каждого теста, но это, похоже, не решило проблему.
Как это исправить?
Спасибо, что сработало. Вы спасатель жизни! : D – Casteurr