如何更改QDialog中的默认按钮行为

2024-10-01 02:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我读到QDialog将其所有对象设置为默认值。例如,如果我添加QPushButton

pushButton.setDefault(True)   
pushButton.setAutoDefaul(True)

我知道我可以将每个对象设置为False,但是有没有一种方法可以避免QDialog将其所有对象设置为默认值?在


Tags: 对象方法falsetruesetdefaultqpushbuttonpushbuttonqdialog
1条回答
网友
1楼 · 发布于 2024-10-01 02:21:52

实际上,将所有按钮的默认值设置为False将不会影响。如果没有将任何按钮设置为默认值,则对话框将仅choose one automatically-因此无论您做什么操作,始终都将是默认值。在

您可以通过重写对话框的keyPressEvent来更改此行为:

class Dialog(QtWidgets.QDialog):
    def keyPressEvent(self, event):
        if ((not event.modifiers() and
             event.key() == QtCore.Qt.Key_Return) or
            (event.modifiers() == QtCore.Qt.KeypadModifier and
             event.key() == QtCore.Qt.Key_Enter)):
            event.accept()
        else:
            super(Dialog, self).keyPressEvent(event)

但是,您应该注意,当一个按钮具有焦点时,按enter或return仍将正常激活它。默认的按钮机制只有在其他小部件有焦点但不包含keypress事件时才起作用(例如在行编辑中按return)。在

相关问题 更多 >