关于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