QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框(此时,其默认出现的位置是 parent 的中心)。顶层窗口与非顶层窗口的区别在于,顶层窗口在任务栏会有自己的位置,而非顶层窗口则会共享其父组件的位置。
对话框 分为模态和非模态两种.区别是:
| -- 非模态对话框,弹出后依旧可以操作父窗口,例如查找对话框
//非模态 QDialog *dia = new QDialog; dia->show();
| -- 模态对话框,就是会阻塞同一应用程序中其它窗口的输入。
//模态 QDialog dia; dia.exec();
Qt有两种级别模态对话框
| - 应用程序级别的模态(默认) : 对话框出现时,必须先与对话框交互,直到关闭,才可访问程序其他窗口.
| - 窗口级别的模态: 仅仅阻塞与对话框关联的窗口,依旧允许用户与程序中其他窗口交互.(用于多窗口模式)
QDialog::exec(); // 实现应用程序级别的模态对话框. QDialog::open(); //实现窗口级别的模态对话框. QDialog::show(); //实现非模态对话框.