Qt的Qwidget退出按钮X要点击2次才能够退出

Debug:Qt的Qwidget退出按钮X要点击2次才能够退出

问题描述:

一个基于Qt界面可视化的机器人系统控制程序,有一个Qwidget,需要点击两次才退出按钮“X”能正常退出。

解决方案:

首先查看该Qwidget类的构造函数中有无阻塞性或者执行时间相对较长的语句,若有,那么问题大概就是它了。

代码段

此为利用Coin3D显示机器人运动的三维仿真部分代码片段:

    myviewer = new SoQtExaminerViewer(qwidget);
    myviewer->setSceneGraph(root);
    myviewer->setBackgroundColor(SbColor(0.8, 0.8, 0.8));
    //myviewer->setTitle("open invenor robot");
    myviewer->show();
    myviewer->viewAll();
    SoQt::mainLoop();   //此语句为该线程阻塞语句

SoQt::mainLoop(); //此语句为该线程阻塞语句,在该代码后面的程序因为被阻塞都不执行,所以在该代码之后的connect语句都无效。
另外:若SoQt::mainLoop()在Qwidget的构造函数中,则该Qwidget需要点击两次才退出按钮“X”能正常退出。

初始解决方案:

将Qwidget类的构造函数中阻塞性或者执行时间相对较长的语句放到Qthread线程中执行即可。
SoQt::mainLoop(); //此语句为该线程阻塞语句。

后续:

经测试发现,将SoQt::mainLoop();注释掉,程序也可以继续执行,原因是qt程序main函数中的exec()与mainloop有同相似的功能。

在这里作下笔记。不足之处请指出!愿我们都能被温柔以待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值