因对对话框的调用方式不同,产生了模态和非模态两种对话框。
模态对话框在显示时,会阻塞当前程序中其它窗口与用户的交互,直到对话框被关闭,其它窗口才能继续接受用户的操作。比如记事本程序中的“字体”对话框:
在程序中调用对话框对象的exec方法,可以显示模态对话框。该方法返回一个QDialog::DialogCode类型的枚举值,表示用户关闭对话框时点击的按钮,“确定”或者“取消”。程序将据此决定后续的执行过程。
非模态对话框显示时,不会阻塞当前程序其它窗口与用户的交互。用户可以同时在非模态对话框和其它窗口中执行操作动作。比如记事本程序中的“查找”对话框:
在程序中调用对话框对象的show方法,可以显示非模态对话框。该方法没有返回值。用户如何关闭非模态对话框并不重要,重要的是用户与非模态对话框的交互操作本身。