• 3878阅读
  • 3回复

关于processEvents();  (已解决) [复制链接]

上一主题 下一主题
离线aoxuehan
 

只看楼主 倒序阅读 楼主  发表于: 2010-03-11
为什么我程序中有个地方用了processEvents();之后有的时间捕捉不到?
比如程序的关闭事件
我是这样用的:
        while((mark == "") && (isClose == false))
            QApplication::processEvents();

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


已解决了,自己太粗心了。!
[ 此帖被aoxuehan在2010-03-12 14:45重新编辑 ]
常梦想自己是地主家的少爷
整天游手好闲,不学无术
没事儿带着一帮狗奴才在大街上调戏良家妇女。
离线benbenmajia

只看该作者 1楼 发表于: 2010-03-11
是不是循环有问题..
安然.....
离线aoxuehan

只看该作者 2楼 发表于: 2010-03-11
     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。但是循环还是没退出。然后我就设断点在这两个函数里面,发现程序根本没有运行进去。。。。
常梦想自己是地主家的少爷
整天游手好闲,不学无术
没事儿带着一帮狗奴才在大街上调戏良家妇女。
离线aoxuehan

只看该作者 3楼 发表于: 2010-03-11
自己顶一下。
有点儿急啊
大家帮帮忙啊@@
常梦想自己是地主家的少爷
整天游手好闲,不学无术
没事儿带着一帮狗奴才在大街上调戏良家妇女。
快速回复
限100 字节
 
上一个 下一个