关于QMainWindow 的 close() 信号,请举例,用代码实现。
时间: 2024-05-16 09:15:49 浏览: 148
好的,这里是一个简单的例子,展示了如何连接 `QMainWindow` 的 `close()` 信号,以及如何在信号被触发时执行一些自定义的操作:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
import sys
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 连接 close() 信号到我们自定义的槽函数
self.closeEvent = self.onClose
def onClose(self, event):
# 在关闭窗口时询问用户是否真的要退出
reply = QMessageBox.question(self, '退出', '确定要退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个自定义的 `MyMainWindow` 类,它继承自 `QMainWindow`。在 `MyMainWindow` 的构造函数中,我们将 `closeEvent` 重载为 `onClose` 方法。`onClose` 方法中,我们弹出一个消息框询问用户是否真的要退出。如果用户点击了“是”,我们调用 `event.accept()`,否则调用 `event.ignore()`,以取消关闭操作。
这样,当用户试图关闭窗口时,就会触发 `close()` 信号,从而执行我们自定义的操作。
阅读全文