Qt Dialog类show()滞后的问题
在用Qt做Ui的时候,声明了一个dialog,调用show()函数显示,然后进行其他操作,但是dialog在其他操作结束后才会显示,有什么方法可以在调用show()方法的...
在用Qt做Ui的时候,声明了一个dialog,调用show()函数显示,然后进行其他操作,但是dialog在其他操作结束后才会显示,有什么方法可以在调用show()方法的时候立刻显示dialog呢?
展开
3个回答
展开全部
dialog还是比较建议用exec的,如果想用show,必须要在堆上new出来。你说其他操作结束后才显示,那可能和具体的其他操作有关系吧,先把其他操作注释掉看看效果。确定是不是其他操作引起的吧。
更多追问追答
追问
其实需求是这样的,我要显示一个提示框,提示正在进行复制文件的操作,然后复制结束后,提示框会自动关闭,用exec是不行的吧,新手,不知道除了dialog还可以用什么……
追答
一闪而过说明你的dialog是在栈上创建的。用show的话dialog必须要new,否则就会一闪而过的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显示非模式对话框时使用这3条语句
dlg->show();
dlg->raise();
dlg->activateWindow();
dlg->show();
dlg->raise();
dlg->activateWindow();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肿么可能, 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来创建..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询