_ZNote_Qt_对话框_模态非模态

QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框(此时,其默认出现的位置是 parent 的中心)。顶层窗口与非顶层窗口的区别在于,顶层窗口在任务栏会有自己的位置,而非顶层窗口则会共享其父组件的位置。

对话框 分为模态和非模态两种.区别是:

| -- 非模态对话框,弹出后依旧可以操作父窗口,例如查找对话框

 //非模态
    QDialog *dia = new QDialog;
    dia->show();

| -- 模态对话框,就是会阻塞同一应用程序中其它窗口的输入。

    //模态
  QDialog dia;
   dia.exec();

Qt有两种级别模态对话框

| - 应用程序级别的模态(默认) : 对话框出现时,必须先与对话框交互,直到关闭,才可访问程序其他窗口.

| - 窗口级别的模态: 仅仅阻塞与对话框关联的窗口,依旧允许用户与程序中其他窗口交互.(用于多窗口模式)

QDialog::exec(); // 实现应用程序级别的模态对话框.
QDialog::open(); //实现窗口级别的模态对话框.
QDialog::show(); //实现非模态对话框.
从〇开始,回到〇
原文地址:https://www.cnblogs.com/zpsoe/p/7007460.html