QDialog类的子类主要有QMessageBox、QFileDialog、QFontDialog、QInputDialog等。
QDialog类中的常用方法:
setWindowTitle() 设置对话框标题
setWindowModality() 设置窗口模态。取值如下:
Qt.NonModal,非模态,可以和程序的其他窗口交互
Qt.WindowModal,窗口模态,程序在未处理完当前对话框时,将阻止和对话框的父窗口进行交互。
Qt.ApplicationModal,应用程序模态,阻止和任何其他窗口进行交互
案例20 QDialog的使用
import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget, QApplication, QDialog, QPushButton class DialogDemo(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("Dialog 例子") self.resize(350, 300) self.btn = QPushButton(self) self.btn.setText("弹出对话框") self.btn.move(50, 50) self.btn.clicked.connect(self.showdialog) def showdialog(self): dialog = QDialog() btn = QPushButton("OK", dialog) btn.move(50, 50) dialog.setWindowTitle("Dialog") dialog.setWindowModality(Qt.ApplicationModal) dialog.exec_() if __name__ == "__main__": app = QApplication(sys.argv) demo = DialogDemo() demo.show() sys.exit(app.exec_())
由于Dialog窗口的WindowModality属性设置为Qt.ApplicationModal模态,用户只有关闭所弹出的对话框窗口后,才能关闭主窗口。