Qt 模态和非模态对话框简述

Qt模态和非模态对话框简述

QDialog类是所有对话框窗口的基类。按照运行对话框是否可以和此程序 的其他界面进行交互,分为两类:模态、非模态

非模态

QDialog *dialog = new QDialog(this);
dialog->show();

模态

  1. 使用exec()显示的对话框,此种方式放到main()函数中则直接显示窗口,如果放到其他窗口的构造函数中则其他窗口不显示,只显示此dialog
		QDialog dialog(this);
		dialog.exec();
  1. 设置setModal(true),此种方式如果放到其他窗口的构造函数中,则原窗口照样显示,只是此dialog前置显示,且无法点击原窗口。
		QDialog *dialog = new QDialog(this);
		dialog->setModal(true);
		dialog->show();

setModal()函数类似,setWindowModality()函数也可以设置模态,其参数有三种选择

  • Qt::NonModal:不阻塞任何窗口,就是非模态
  • Qt::WindowModal:阻塞它的父窗口、所有祖先窗口以及它们的子窗口
  • Qt::ApplicationModal:阻塞整个应用程序的所有窗口
    注:setMOdal()函数默认设置的是Qt::ApplicationModal

你可能感兴趣的:(qt)