一个有趣的现象,欢迎讨论。
上代码:
主程序
{
QProcess pro;
connect(&pro,SIGNAL(readyReadStandardOutput()),this,SLOT(ReceiveOutput()));
pro.start("test.exe");
pro.waitForFinished(300000);
}
void MainDialog::ReceiveOutput(void)
{
QByteArray ba;
ba.resize(4096);
ba = proDial.readAllStandardOutput();
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString str = codec->toUnicode(ba);
if ( str.size() > 0 )
{
ui->listInformation->addItem(item);
ui->listInformation->setCurrentRow( ui->listInformation->count());
ui->listInformation->scrollToBottom();
...
}
}
说明:
外部调用一个可执行程序test.exe,test.exe正常执行输出多行信息,然后在主程序窗口中逐行显示出来。
现象:
在Windows 7下面运行一切正常,但是在Windows XP下,信息是当test.exe执行完毕一次性返回的,貌似阻塞了readyReadStandardOutput信号。
Qt的信号会出现丢失的情况吗?
[解决办法]