• 5272阅读
  • 6回复

[提问]紧急求助:菜鸟提问关于exec的问题 [复制链接]

上一主题 下一主题
离线也冰雪
 

只看楼主 倒序阅读 楼主  发表于: 2012-11-07
关键词: 求助
为什么show和exec需要同时使用才能显示正确。举个简单的例子,代码如下
#include <QApplication>#include "finddialog.h"int main(int argc, char *argv[]){    QApplication app(argc, argv);    FindDialog *dialog = new FindDialog;    dialog->show();    return app.exec();}结果如下:

在show和exec中加入一个Qsleep(5000);后,前五秒就变成这样了

我想做的是让一个widget离得东西能够没过5秒显示一个东西,比如动态画图,没来一个数据,我都要在我的坐标中标出,该怎么处理?
没有能够代替exec的函数功能但是能够不用等待直接执行下面的代码?
离线也冰雪

只看该作者 1楼 发表于: 2012-11-07
图片在这里……之前没传好
离线也冰雪

只看该作者 2楼 发表于: 2012-11-08
自己顶~
离线roywillow

只看该作者 3楼 发表于: 2012-11-08
app.exec()是启动QApplication的事件循环,这样才可启动事件的处理
你在两行中加了个sleep,show之后没事件循环,自然卡死了,5s后才开始循环,就可以响应用户了
你需要的是个QTimer吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线也冰雪

只看该作者 4楼 发表于: 2012-11-08
我的目的是想做一个类似于用二维图画cpu利用率的动态图,,然后数据从试验台不定时发送过了。
data=getdata();//得到试验台的数据
while(1)
{
if(data!=NULL)
{draw();//画图
show();}
data=getdata();//得到试验台的数据
}
exec;
主要的流程大概是这样,问题是没有exec只显示框和退出按钮,里面的图不显示
离线roywillow

只看该作者 5楼 发表于: 2012-11-08
获得处理数据的部分我认为应该放在dialog里面进行,至少应该让dialog进行管理比较好。
既然你需要用到死循环,那么可以考虑使用多线程,或者在循环中调用QApplication::processEvents()来强制处理消息,否则循环不跳出,Qt的消息就没法得到处理,窗口的响应、重绘都失效。
我不清楚你那段代码有多少是实际使用的,但是你好像对show()的理解有些问题。将隐藏的QWidget显示出来需要调用show(),但是只是要更新一下画面让新的内容显示出来而使用show()是没意义的,update()或许才是你想要的。
楼顶的那段代码是直接用的教程上的吧,FindDialog *dialog = new FindDialog这行不推荐,因为只new没delete,并且又没交给Qt来处理,所以结果你应该知道吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线shiziyang

只看该作者 6楼 发表于: 2012-11-08
sleep什么的要开个线程发信号来做,你可以换成timer
快速回复
限100 字节
 
上一个 下一个