Я работаю с QProcess
и подключил сигнал QProcess
readyReadStandardOutput()
.
Этот процесс обычно регулярно выплевывает данные на консоль, но readyReadStandardOutput()
, кажется, пакетные результаты и излучать только каждые полминуты или около того (со всеми накопленными данными).
Я хочу получить доступ к "прямой трансляции" QProcess
, поэтому я подумал, что, возможно, QProcess
' s суперкласс QIODevice
имеет некоторые другие сигналы.
Другие решения вместо использования байтов также приветствуются
Теперь я пытаюсь подключить bytesWritten
, но это не пускает меня.
Код:
void MainWindow::on_Program_clicked() {
program= new QProcess(this);
QString file = "../folder/program/program.exe";
QString directory = "../folder/program/";
//qint64 pid;
program->setWorkingDirectory(directory);
program->start(file, {""});
program->waitForStarted();
connect(program, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
//ERROR: "QObject::connect: No such signal QProcess::bytesWritten() in ..\---\mainwindow.cpp:45
connect(program, SIGNAL(bytesWritten()), this, SLOT(myBytesWritten()));
}
void MainWindow::myBytesWritten() {
QProcess *program = dynamic_cast<QProcess *>(sender());
QByteArray outData = program->readAll();
qDebug() << "DEBUG: " + outData;
}
//Works, but only emits a signal every so often, and not every time a new line is written to the console as when I launch the exe normally
void MainWindow::readOutput(){
QProcess *program = dynamic_cast<QProcess *>(sender());
QByteArray outData = program->readAll();
qDebug() << "DEBUG: " + outData;
}