• 9843阅读
  • 7回复

哪位有空给讲解一下QDialog的show()和exec()吧 [复制链接]

上一主题 下一主题
离线kran
 

只看楼主 倒序阅读 楼主  发表于: 2008-08-02
— 本帖被 XChinux 执行加亮操作(2008-08-02) —
void QDialog::show () [虚]
显示非模式或半模式对话框。控制立即返回到调用代码中。
对话框没有一个本地事件循环,所以你必须定时地调用QApplication::processEvents()来使对话框能够得到处理它的事件的机会。
如果在构造函数中,模式标记被设置为真,对话框将为半模式。

exec()应该是明白一点的,但这个show总是云里雾里的,搞不太明白,它和QWidget的show()区别有多大?什么时候使用show或者exec?
新人来的,请大家照顾。:)
离线lazybone
只看该作者 1楼 发表于: 2008-08-02
exec() 可控制的只有当前窗口
show()可在窗口间切换
离线justmeloo

只看该作者 2楼 发表于: 2008-08-02
一个以模态方式显示,一个以非模态方式显示,并且都进入各自的消息循环,非模态的对话框必须在对上创建,其他的我就不知道来了
努力中的青春岁月
离线duduqq

只看该作者 3楼 发表于: 2008-08-03
好高深,不理解什么意思,我只知表面的东西,看来得多多请教高手们.
离线kran

只看该作者 4楼 发表于: 2008-08-04
引用第2楼justmeloo于2008-08-02 20:39发表的  :
一个以模态方式显示,一个以非模态方式显示,并且都进入各自的消息循环,非模态的对话框必须在对上创建,其他的我就不知道来了

这个模态和非模态是什么意思?
离线foxyz

只看该作者 5楼 发表于: 2008-08-04
show()是显示你的窗口.exec是建立窗口的消息循环。
你的明白?这两个一般是一起出现的,否则,你的dialog或者window闪一下就没了。
有了exec,你的窗口会一直在那开着等待消息触发
离线kran

只看该作者 6楼 发表于: 2008-08-05
我看到一个slot里是这样的
XXDialog dialog;
dialog.exec(); //if(dialog.exec()){...}

这里不需要show的,难道只有顶级窗口才需要show的吗?
离线txiejun
只看该作者 7楼 发表于: 2008-08-05
引用第4楼kran于2008-08-04 08:14发表的  :
这个模态和非模态是什么意思?

晕。大体上说,

模态对话框,允许使用者在对话框与其他程式之间进行切换。但是,使用者不能切换到同一程式的另一个视窗,直到模态对话方块被清除为止。
非模态对话框,允许使用者在对话方块与其他程式之间进行切换,又可以在对话框与建立对话框的视窗之间进行切换。
简单点:查找与替换对话框是非模态对话框,而一些弹出对话框需要你做出选择后才能进行其他操作的是模态对话框。
三分天注定,七分靠打拼,爱拼才会赢!
快速回复
限100 字节
 
上一个 下一个