show()显示非模态对话框,exec()显示模态对话框. 非模态对话框不会阻塞程序的线程,因此 如果你的对话框时创建在栈上,跳出作用域之后,对象便销毁了,对话框会一闪而过: 如果使用new在堆上创建对话框,跳出作用域之后对象不能被销毁,但是建立在堆上需要考虑释放内存的问题: 非模态对话框不会阻塞线程,可能用户还没来得及输入数据,就已经执行之后的代码. 模态对话框开启一个事件循环,会阻塞程序的线程,函数返回之后,直接获取对话框的数据. 新建一个项目,主界面如下: 非模态窗口打开代码如下: 1 #