我读到QDialog
默认将其所有对象设置为默认值。例如,如果我添加QPushButton
:
pushButton.setDefault(True)
pushButton.setAutoDefaul(True)
我知道我可以将每个设置为False
,但有没有办法避免QDialog
将所有对象设置为默认值?
答案 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键或返回仍将正常激活它。默认按钮机制仅在某些其他窗口小部件具有焦点但不会吞下按键事件时才会起作用(例如,在行编辑中按回车)。