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

时间:2018-05-09 09:33:52

标签: python python-2.7 pyqt pyqt4 qdialog

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

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

我知道我可以将每个设置为False,但有没有办法避免QDialog将所有对象设置为默认值?

1 个答案:

答案 0 :(得分:2)

实际上,将所有按钮的默认值设置为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键或返回仍将正常激活它。默认按钮机制仅在某些其他窗口小部件具有焦点但不会吞下按键事件时才会起作用(例如,在行编辑中按回车)。