引用第2楼jdwx于2012-03-16 09:04发表的 :
要读取QProcess的输出,需要响应下面的信号,有信号发射了才有信息输出。
void readyReadStandardError ()
void readyReadStandardOutput ()

按照您说的,现在这样修改
void MainWindow::testA()
{
//qt的最下面的"应用程序输出"能看到log,最下面的cout也拿不到
//QProcess* proc = new QProcess();
proc = new QProcess();
QStringList arg;
connect(proc,SIGNAL(readyReadStandardOutput()),this,SLOT(readStandardOutput())); connect(proc,SIGNAL(readyReadStandardError()),this,SLOT(readErrorOutput())); proc->execute("mediastreamvalidator",arg);
proc->waitForStarted(-1);
proc->waitForFinished(-1);
//这里拿不到
// cout << "标准输出" << proc->readAllStandardOutput().size() << endl;
// cout << "错误输出" << proc->readAllStandardError().size() << endl;
}
void MainWindow::testB()
{
//qt的最下面的"应用程序输出"看不到log,最下面的cout也拿不到
//QProcess* proc = new QProcess();
proc = new QProcess();
QStringList arg;
arg << "-c";
arg << "/usr/bin/mediastreamvalidator";
connect(proc,SIGNAL(readyReadStandardOutput()),this,SLOT(readStandardOutput())); connect(proc,SIGNAL(readyReadStandardError()),this,SLOT(readErrorOutput())); proc->execute("/bin/bash/",arg);
proc->waitForStarted(-1);
proc->waitForFinished(-1);
//这里拿不到
// cout << "标准输出" << proc->readAllStandardOutput().size() << endl;
// cout << "错误输出" << proc->readAllStandardError().size() << endl;
}
void MainWindow::readStandardOutput(){
cout << "readStandardOutput 标准输出" << proc->readAllStandardOutput().size() << endl;
cout << "readStandardOutput 错误输出" << proc->readAllStandardError().size() << endl;
}
void MainWindow::readErrorOutput(){
cout << "readErrorOutput 标准输出" << proc->readAllStandardOutput().size() << endl;
cout << "readErrorOutput 错误输出" << proc->readAllStandardError().size() << endl;
}
这里最后的两个红色的方法没有得到调用,设置error的put也是没有输出,按照这个结果来猜测,貌似是readyReadStandardOutput信号和readyReadStandardError信号没有发射,不知道还有没有什么解决的办法?