我正在学习 Qt 并设法使用教程中的以下代码来启动外部应用程序并处理从它收到的输出:
void Dialog::on_startButton_clicked()
{
QString program = "C:/Program Files/ffmpeg/bin/ffmpeg.exe";
mTranscodingProcess = new QProcess(this);
connect(mTranscodingProcess, SIGNAL(started()), this, SLOT(processStarted()));
connect(mTranscodingProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(readyReadStandardOutput()));
connect(mTranscodingProcess, SIGNAL(finished(int)), this, SLOT(encodingFinished()));
QStringList arguments;
QString input = "myfile_path_1";
QString input2 = "myfile_path_2";
arguments << "-y" << "-i" << input << "-i" << input2 << "-c" << "copy" << "output.avi" ;
qDebug() << arguments;
mTranscodingProcess->setProcessChannelMode(QProcess::MergedChannels);
mTranscodingProcess->start(program, arguments);
}
这按预期工作,我可以在我的应用程序中捕获和处理来自readyReadStandardOutput()
和encodingFinished()
插槽的输出。
现在我的问题是:如何启动上述其他工作并从每个实例接收单独的更新。