首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

2012-03-14 
一个有趣的现象,欢迎讨论。上代码:主程序{QProcess proconnect(&pro,SIGNAL(readyReadStandardOutput()),t

一个有趣的现象,欢迎讨论。
上代码:
主程序
{
  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……

热点排行