大家好。我在使用QProcess读取进程的输出时遇到了一个问题。下面是具体的代码:
void MainWindow::showPictInfo(QString fileName)
{
QString startProgram = "exiv2.exe " + fileName;
p->start(startProgram);
connect(p,SIGNAL(finished(int)),this,SLOT(readResult(int)));
}
void MainWindow::readResult(int exitCode)
{
qDebug()<<"in readResult";
if(exitCode == 0)
{
QTextCodec* gbkCodec = QTextCodec::codecForName("GBK");
QString result = gbkCodec->toUnicode(p->readAll());
ui->basicFileInfo->setText(result);
}
}
在第一次读取时没有问题,正常显示了进程的输出。但是再次读取时却发现readResult()执行了两遍(有两个qDebug()输出),
跟踪调试发现第一遍执行正确获取了信息,第二遍执行就把信息覆盖成空字符串了。这是什么原因造成的呢?