在PyQt 5中,可以通过以下步骤实现最小化QMainWindow时使模态QDialog最小化:
from PyQt5.QtWidgets import QMainWindow, QPushButton, QDialog, QApplication
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
self.button = QPushButton("Open Dialog", self)
self.button.clicked.connect(self.open_dialog)
self.setCentralWidget(self.button)
def open_dialog(self):
dialog = CustomDialog(self)
dialog.setModal(True)
dialog.show()
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QApplication
class CustomDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("Custom Dialog")
layout = QVBoxLayout()
label = QLabel("This is a custom dialog.", self)
layout.addWidget(label)
self.setLayout(layout)
def closeEvent(self, event):
event.ignore()
self.parent().showMinimized()
self.hide()
在上述代码中,我们重写了closeEvent()方法,并在其中调用了parent()方法获取父窗口(即QMainWindow),然后使用showMinimized()方法将其最小化,并使用hide()方法隐藏对话框本身。
import sys
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
这样,当点击主窗口中的按钮时,将会显示一个模态对话框。当关闭该对话框时,主窗口将会最小化。
关于PyQt 5的更多信息和使用方法,可以参考腾讯云的相关产品和文档:
领取专属 10元无门槛券
手把手带您无忧上云