一个有趣的现象,欢迎讨论。

warknife 2011-12-12 01:20:43
上代码:
主程序
{
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的信号会出现丢失的情况吗?
...全文
214 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
warknife 2011-12-14
  • 打赏
  • 举报
回复
暂时没时间试验,先结贴。
warknife 2011-12-12
  • 打赏
  • 举报
回复
明白。再去试试。
dbzhang800 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 warknife 的回复:]

引用 1 楼 dbzhang800 的回复:
引用楼主 warknife 的回复:
上代码:
主程序
{
QProcess pro;

connect(&pro,SIGNAL(readyReadStandardOutput()),this,SLOT(ReceiveOutput()));
pro.start("test.exe");
pro.waitFor……
[/Quote]
和你是不是vc写的没什么关系,也和具体用什么语言没关系。
先关闭其全缓冲试试再说,或者该加 flush 的地方就加上。
warknife 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dbzhang800 的回复:]
引用楼主 warknife 的回复:
上代码:
主程序
{
QProcess pro;

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

void ……
[/Quote]

其实所谓的test.exe是用vc写的标准的windows程序,并非qt开发的控制台程序。实际案例中test.exe是windows的拨号程序RasDial.exe。继续求解......
dbzhang800 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 warknife 的回复:]
上代码:
主程序
{
QProcess pro;

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

void MainDial……
[/Quote]
一般来说,是因为你的test.exe使用的全缓冲造成的。关闭其缓冲或者改成行缓冲再试。

http://blog.csdn.net/dbzhang800/article/details/6876451

16,819

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧