繁体   English   中英

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

[英]How to change the default button behaviour in a QDialog

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

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

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

实际上,将所有按钮的默认设置都设置为False 不会有任何影响 如果未将任何按钮设置为默认按钮,则对话框将自动选择一个按钮-因此,无论您做什么,都将始终存在默认按钮。

您可以通过覆盖对话框的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仍将照常激活它。 默认按钮机制仅在某些其他小部件具有焦点但不吞下按键事件(例如,在行编辑中按return)时才起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM