读书人

一个有趣的现象欢迎讨论。该怎么处理

发布时间: 2012-03-14 12:01:13 作者: rapoo

一个有趣的现象,欢迎讨论。
上代码:
主程序
{
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的信号会出现丢失的情况吗?


[解决办法]

探讨
上代码:
主程序
{
QProcess pro;

connect(&pro,SIGNAL(readyReadStandardOutput()),this,SLOT(ReceiveOutput()));
pro.start("test.exe");
pro.waitForFinished(300000);
}

void MainDial……

读书人网 >QT开发

热点推荐