当前位置: 代码迷 >> QT开发 >> 一个有趣的现象,欢迎讨论。该怎么处理
  详细解决方案

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

热度:256   发布时间:2016-04-25 05:13:17.0
一个有趣的现象,欢迎讨论。
上代码:
主程序
{
  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……
  相关解决方案