在PyQt5中,可以使用QDialog
的rejected
信号来监听用户点击窗体的Cancel或退出按钮,可以使用QKeyEvent
事件来监听用户按下Esc键。
例如,假设我们有一个自定义的对话框类MyDialog
,可以在这个类中重载keyPressEvent
方法来监听Esc键:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QKeyEvent
from PyQt5.QtWidgets import QDialog
class MyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.reject() # 用户按下Esc键,发送rejected信号
else:
super().keyPressEvent(event) # 其他情况,调用父类方法
在这个例子中,我们检测用户按下的键是否是Esc键,如果是,就调用reject
方法发送rejected
信号,否则调用父类的keyPressEvent
方法。在主程序中,我们可以使用rejected
信号连接一个槽函数来处理用户点击Cancel或退出按钮的情况:
def on_rejected(self):
print("User clicked Cancel or X button or pressed Esc")
dialog = MyDialog()
dialog.rejected.connect(self.on_rejected)
这个例子中,我们连接了rejected
信号和on_rejected
槽函数,当用户点击Cancel或退出按钮,或者按下Esc键时,槽函数就会被调用,输出一条消息。