class QDialogButtonBox#

《QDialogButtonBox》类是一个小部件,适用于当前小部件样式,以适当的布局显示按钮。 更多

Inheritance diagram of PySide6.QtWidgets.QDialogButtonBox

简介#

属性#

方法#

信号#

注意

本说明书可能包含从 C++ 自动翻译到 Python 的片段。我们始终欢迎对片段翻译的贡献。如果您发现存在翻译问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式告诉我们。

详细说明#

警告

本节包含自动从 C++ 翻译到 Python 的片段,可能包含错误。

对话框和信息框通常以符合该平台界面指南的布局显示按钮。不同的平台具有不同的对话框布局。 QDialogButtonBox 允许开发者为对话框添加按钮,并会自动使用适合用户桌面环境的适当布局。

大多数对话框按钮遵循某些角色。这些角色包括

  • 接受或拒绝对话框。

  • 请求帮助。

  • 对对话框本身进行操作(例如重置字段或应用更改)。

也还可以有退出对话框的替代方法,这可能会导致破坏性结果。

大多数对话框具有几乎可以被认为是标准的按钮(例如“确定”和“取消”按钮)。有时以标准方式创建这些按钮是方便的。

使用 QDialogButtonBox 的方法有几个。一种方法是自己创建按钮(或按钮文本),然后将它们添加到按钮框中,指定它们的角色。

buttonBox = QDialogButtonBox(Qt.Vertical)
buttonBox.addButton(findButton, QDialogButtonBox.ActionRole)
buttonBox.addButton(moreButton, QDialogButtonBox.ActionRole)

另一种方法是,QDialogButtonBox提供了几个标准的按钮(例如“确定”、“取消”、“保存”)供您使用。这些按钮存在为标志,您可以在构造函数中将它们进行或运算组合。

buttonBox = QDialogButtonBox(QDialogButtonBox.Ok
                                 | QDialogButtonBox.Cancel)
buttonBox.accepted.connect(self.accept)
buttonBox.rejected.connect(self.reject)

可以混合并使用普通按钮和标准按钮。

如果按钮框是水平布局,当前按钮的布局方式如下

buttonbox-gnomelayout-horizontal1 GnomeLayout 水平

按钮框按水平 GnomeLayout 布局

buttonbox-kdelayout-horizontal2 KdeLayout 水平

按钮框按水平 KdeLayout 布局

buttonbox-maclayout-horizontal3 MacLayout 水平

按钮框按水平 MacLayout 布局

buttonbox-winlayout-horizontal4 WinLayout 水平

按钮框按水平 WinLayout 布局

如果按钮框是垂直布局,按钮的布局方式如下

此外,仅包含具有ActionRoleHelpRole的按钮的按钮框可以被视为模式对话框,并在macOS上具有不同的外观

非模态水平 MacLayout

buttonbox-mac-modeless-horizontal9 非模态水平 MacLayout 的截图

非模态垂直 MacLayout

buttonbox-mac-modeless-vertical10 非模态垂直 MacLayout 的截图

当单击按钮框中的按钮时,会发出 clicked() 信号给实际被按下的按钮。为了方便起见,如果按钮具有 AcceptRoleRejectRoleHelpRole 角色,则分别发出 accepted()rejected()helpRequested() 信号。

如果您想要某个按钮成为默认按钮,则需要自行在该按钮上调用 setDefault()。然而,如果没有设置默认按钮,并且在使用 autoDefault 属性时保留平台间默认按钮的一致性,则在显示 QDialogButtonBox 时,接受角色的第一个按钮将被设置为默认按钮。

class ButtonRole#

此枚举描述了可以用来描述按钮框中按钮的角色的枚举。这些角色的组合作为标志使用,用于描述它们行为的不同方面。

常量

描述

QDialogButtonBox.InvalidRole

按钮无效。

QDialogButtonBox.AcceptRole

单击按钮将使对话框被接受(例如,OK)。

QDialogButtonBox.RejectRole

单击按钮将使对话框被拒绝(例如,取消)。

QDialogButtonBox.DestructiveRole

点击按钮将导致破坏性更改(例如,丢弃更改)并关闭对话框。

QDialogButtonBox.ActionRole

点击按钮将导致对话框内元素的变化。

QDialogButtonBox.HelpRole

可以点击按钮请求帮助。

QDialogButtonBox.YesRole

该按钮是一个类似于“是”的按钮。

QDialogButtonBox.NoRole

该按钮是一个类似于“否”的按钮。

QDialogButtonBox.ApplyRole

该按钮应用当前更改。

QDialogButtonBox.ResetRole

该按钮将对话框字段重置为默认值。

另请参阅

StandardButton

class StandardButton#

(继承自 enum.Flag) These enums describe flags for standard buttons. Each button has a defined ButtonRole .

常量

描述

QDialogButtonBox.Ok

一个定义了 AcceptRole 的“确定”按钮。

QDialogButtonBox.Open

一个定义了 AcceptRole 的“打开”按钮。

QDialogButtonBox.Save

一个定义了 AcceptRole 的“保存”按钮。

QDialogButtonBox.Cancel

一个定义了 RejectRole 的“取消”按钮。

QDialogButtonBox.Close

一个定义了 RejectRole 的“关闭”按钮。

QDialogButtonBox.Discard

一个定义了 DestructiveRole 的“弃置”或“不保存”按钮,具体取决于平台。

QDialogButtonBox.Apply

一个定义了 ApplyRole 的“应用”按钮。

QDialogButtonBox.Reset

一个定义了 ResetRole 的“重置”按钮。

QDialogButtonBox.RestoreDefaults

一个定义了 ResetRole 的“恢复默认”按钮。

QDialogButtonBox.Help

一个定义了 HelpRole 的“帮助”按钮。

QDialogButtonBox.SaveAll

一个定义了 AcceptRole 的“全部保存”按钮。

QDialogButtonBox.Yes

一个定义了 YesRole 的“是”按钮。

QDialogButtonBox.YesToAll

一个定义了 YesRole 的“全部是”按钮。

QDialogButtonBox.No

使用 NoRole 定义了一个“否”按钮。

QDialogButtonBox.NoToAll

使用 NoRole 定义了一个“否所有”按钮。

QDialogButtonBox.Abort

使用 RejectRole 定义了一个“中止”按钮。

QDialogButtonBox.Retry

使用 AcceptRole 定义了一个“重试”按钮。

QDialogButtonBox.Ignore

使用 AcceptRole 定义了一个“忽略”按钮。

QDialogButtonBox.NoButton

一个无效的按钮。

class ButtonLayout#

此枚举描述了在按钮框中排列按钮时要使用的布局策略。

常量

描述

QDialogButtonBox.WinLayout

适用于Windows应用程序的相应策略。

QDialogButtonBox.MacLayout

适用于macOS应用程序的相应策略。

QDialogButtonBox.KdeLayout

适用于KDE应用程序的相应策略。

QDialogButtonBox.GnomeLayout

适用于GNOME应用程序的相应策略。

QDialogButtonBox.AndroidLayout

适用于Android应用程序的相应策略。此枚举值自Qt 5.10开始使用。

按钮布局由 current style 指定。然而,在X11平台上,它可能受到桌面环境的影响。

注意

可以直接使用当使用 from __feature__ import true_property 时,或者通过访问函数使用。

property centerButtons: bool#

此属性表示按钮框中的按钮是否居中。

默认情况下,此属性为 false。此行为适用于大多数类型的对话框。一个显著的例外是大多数平台(例如Windows)上的消息框,其中按钮框在水平方向上居中。

另请参阅

QMessageBox

访问函数
property orientation: Qt.Orientation#

此属性表示按钮框的方向。

默认情况下,方向为水平(即按钮并排排列)。可能的方向有 Qt::Horizontal 和 Qt::Vertical。

访问函数
属性 standardButtons: QDialogButtonBox.StandardButton 的组合#

该属性包含按钮框中的标准按钮集合。

该属性控制按钮框使用哪些标准按钮。

另请参阅

addButton()

访问函数
__init__(buttons, orientation[, parent=None])#
参数::

构造一个具有给定 orientationparent 的按钮框,包含由 buttons 指定的标准按钮。

另请参阅

orientation addButton()

__init__([parent=None])
参数::

parentQWidget

使用给定的 parent 构造一个空的,水平按钮框。

另请参阅

orientation addButton()

__init__(orientation[, parent=None])
参数::

使用给定的 orientationparent 构造一个空的按钮框。

另请参阅

orientation addButton()

__init__(buttons[, parent=None])
参数::

使用给定的 parent 构造一个水平按钮框,包含由 buttons 指定的标准按钮。

另请参阅

orientation addButton()

accepted()#

按钮框内的按钮被点击时发出此信号,只要它被定义为具有 AcceptRoleYesRole

addButton(button, role)#
参数::

将指定 role 的按钮添加到按钮框中。如果该角色无效,按钮不会被添加。

如果按钮已添加,则将其移除并重新添加以使用新的角色。

注意

按钮框将获得按钮的所有权。

另请参阅

removeButton() clear()

addButton(button)
参数::

buttonStandardButton

返回类型:

QPushButton

如果可以添加标准按钮,则将其添加到按钮框并返回一个按钮。如果