• 6018阅读
  • 0回复

[讨论]Qt QDialog::show之后再QDialog::exec [复制链接]

上一主题 下一主题
离线wangjieest
 

只看楼主 正序阅读 楼主  发表于: 2012-11-23
Qt QDialog::show之后再QDialog::exec


QDialog::show() 是非模态窗口;

但是之后再调用 QDialog::exec() 是可以获得他的返回值的.并且可以堵塞程序防止析构函数关闭...这是为什么呢.

例如 我在某个函数调用里面,构造一个栈对象 QDialog dlg;
我需要一个非模态窗口.
那么我调用 dlg.show();
我还需要这个dlg的返回值.
那么我 int ret =  dlg.exec();
等待函数返回...

但是,它并不会阻塞我这个函数的返回...
我对这个函数多次调用,还是可行的.

同时,我的dlg.exec() 返回时,还是会从当前位置返回,(可以中断在该位置.)

问题1: 既然show是非模态的. 那么为什么exec可以堵塞dlg的析构?
问题2: 在这个情况下的exec(),到底通过什么方式,不会阻塞调用函数的呢?
快速回复
限100 字节
 
上一个 下一个