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

关于processEvents();该怎么解决

2012-08-03 
关于processEvents()为什么我程序中有个地方用了processEvents()之后有的时间捕捉不到?比如程序的关闭事

关于processEvents();
为什么我程序中有个地方用了processEvents();之后有的时间捕捉不到?
比如程序的关闭事件
我是这样用的:
  while((mark == "") && (isClose == false))
  QApplication::processEvents();

然后我想在程序关闭的closeEvent(QCloseEvent *event)里面设置isColse = true;以便结束上面的循环,然后关闭程序
但是调试发现点击程序右上角关闭的时候,程序根本不会跳到closeEvent(QCloseEvent *event)函数里面去。这样的话,程序界面是消失了。但是进程还是在,因为循环还在继续。
请问有什么办法啊??!
谢谢!!


 while((mark == "") && (continueCmd == false))
  {
  while((mark == "") && (isClose == false))
  QApplication::processEvents();
  //这里处理获得的消息
  ui.speedUp->setText(mark);
  if(mark != tr("未知"))
  continueCmd = true;
  mark = "";
  }
这就是那个循环,是个语音命令控制。
mark是经过MS的语音sdk识别后返回的命令。当语音识别出来后,会复制给mark。
我试过了。如果发出了命令。没有问题。这个循环正常退出了。
但是如果打开软件,开始这个循环之后不发命令。然后在析构函数和closeEvent函数中设定continueCmd 与 isClose未true。但是循环还是没退出。然后我就设断点在这两个函数里面,发现程序根本没有运行进去。。。。

[解决办法]
分析一下Qt的源代码,看closeEvent是在何处调用的。以便决定如何调用processEvents

热点排行