Qt Dialog类show()滞后的问题

在用Qt做Ui的时候,声明了一个dialog,调用show()函数显示,然后进行其他操作,但是dialog在其他操作结束后才会显示,有什么方法可以在调用show()方法的... 在用Qt做Ui的时候,声明了一个dialog,调用show()函数显示,然后进行其他操作,但是dialog在其他操作结束后才会显示,有什么方法可以在调用show()方法的时候立刻显示dialog呢? 展开
 我来答
百度网友914ba41
2013-10-10 · TA获得超过1608个赞
知道小有建树答主
回答量:1217
采纳率:50%
帮助的人:937万
展开全部
dialog还是比较建议用exec的,如果想用show,必须要在堆上new出来。你说其他操作结束后才显示,那可能和具体的其他操作有关系吧,先把其他操作注释掉看看效果。确定是不是其他操作引起的吧。
更多追问追答
追问
其实需求是这样的,我要显示一个提示框,提示正在进行复制文件的操作,然后复制结束后,提示框会自动关闭,用exec是不行的吧,新手,不知道除了dialog还可以用什么……
追答
一闪而过说明你的dialog是在栈上创建的。用show的话dialog必须要new,否则就会一闪而过的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MyVCer
2013-10-10 · TA获得超过120个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:84.8万
展开全部
显示非模式对话框时使用这3条语句
dlg->show();
dlg->raise();
dlg->activateWindow();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者XXGDQ4kMbU
2013-10-09 · TA获得超过1281个赞
知道小有建树答主
回答量:371
采纳率:66%
帮助的人:431万
展开全部
肿么可能, dialog 在调用show的时候立马就会显示了.
关键的代码贴一下.我帮你看看...
更多追问追答
追问
不好意思,代码不能贴
大体就是
声明一个Dialog类
在另一个类中实例化一个dialog
然后show
然后进行复制文件操作
然后关闭dialog

结果现在就是复制文件的时候,dialog不会弹出来,复制结束后,一闪而过……

http://hi.baidu.com/wolfand11/item/d4e588db2117b3ed54347fc6
我的问题和这个差不多
追答
(看了你了楼上的聊天记录)

我猜测下你的代码顺序..
QDialog dialog;
dialog.show();
开始复制文件...

我觉得应该是复制文件的时候占用了ui 的主线程导致dialog没办法显示
还有一闪而过的问题就是真的就是没有 new 了..

我觉得你需要这样...
在copy 文件的时候顺便处理qt app的任务,这样线程就不会完全被阻塞了..
就是这样...

while(true)//拷贝事件的循环....
{
拷贝....
QCoreApplication::processEvents();
}

这样一边拷贝,一边处理ui 事件... dialog 就一定可以显示出来..不过记得dialog一定要用new来创建..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式