Jon*_*ski 2 python pyqt qdialog pyqt4 python-2.7
我读到QDialog它的所有对象都设置为默认值。例如,如果我添加一个QPushButton:
pushButton.setDefault(True)
pushButton.setAutoDefaul(True)
Run Code Online (Sandbox Code Playgroud)
我知道我可以将每个对象设置为False,但是有没有办法避免QDialog将其所有对象设置为默认值?
False实际上,将所有按钮设置为默认值不会有任何影响。如果没有将按钮设置为默认按钮,则对话框将自动选择一个按钮- 因此无论您做什么,总会有一个默认按钮。
您可以通过覆盖对话框来更改此行为keyPressEvent:
def keyPressEvent(self, event):
if event.matches(QtGui.QKeySequence.Cancel):
self.reject()
else:
event.ignore()
Run Code Online (Sandbox Code Playgroud)
Esc这完全覆盖了默认按钮的行为,但保留了按下eg时对话框的取消。如果您也不希望这样,只需调用event.ignore(),这将允许所有按键事件传播到当前焦点小部件。因此,当按钮或行编辑获得焦点时,按Enter或Return仍将正常激活它。默认按钮机制仅在其他某个小部件具有焦点但不吞咽按键事件(例如,Return在行编辑中按下时)时才发挥作用。
| 归档时间: |
|
| 查看次数: |
2601 次 |
| 最近记录: |