如何更改 QDialog 中的默认按钮行为
Posted
技术标签:
【中文标题】如何更改 QDialog 中的默认按钮行为【英文标题】:How to change the default button behaviour in a QDialog 【发布时间】:2018-05-09 09:33:51 【问题描述】:我读到QDialog
将其所有对象都设置为默认值。例如,如果我添加一个QPushButton
:
pushButton.setDefault(True)
pushButton.setAutoDefaul(True)
我知道我可以将每个对象都设置为False
,但是有没有办法避免QDialog
将其所有对象都设置为默认值?
【问题讨论】:
【参考方案1】:实际上,将所有按钮的默认值设置为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 仍会正常激活它。默认按钮机制仅在其他一些小部件具有焦点但不吞下按键事件(例如,在行编辑中按返回)时发挥作用。
【讨论】:
以上是关于如何更改 QDialog 中的默认按钮行为的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Qdialog 中的信号连接到 QMainwindow 中的插槽