• 4614阅读
  • 2回复

[提问]怎样在一个非常耗时的操作前在状态栏上显示信息? [复制链接]

上一主题 下一主题
离线yzpdsg
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-12
    我这里有个循环,执行起来比较耗时间(5秒左右),因此想在执行期间在状态栏上显示一些信息给用户。我是这么做的:

[pre]forth_statusLabel->setText(tr("正在处理。。。"));[/pre]for(i = 0; i < fileList.count();++i)[pre]    {[/pre][pre]        fileName = targetDir + fileList[i];[/pre][pre]        proceed(dir.path() + QString("/") + fileList.at(i));//eg:"c:/2005-100/1/1004"[/pre][pre]    }[/pre][pre]    forth_statusLabel->setText(tr("已结束。"));

但是程序并没有显示出“正在处理”,在for循环结束后直接显示"已结束"。在for循环执行时程序没有响应。

为什么上面的信息没有显示出来?如果这样做不对,那么该怎么做呢?
[/pre]
离线roywillow

只看该作者 1楼 发表于: 2011-04-12
是不是在for循环中调用一下processEvent会比较好?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线yzpdsg

只看该作者 2楼 发表于: 2011-04-12
回 1楼(roywillow) 的帖子
哦,谢谢!已解决,就在循环中加入了一个QCoreApplication::processEvent()就可以了!!!
再次感谢!
快速回复
限100 字节
 
上一个 下一个