QDialogButtonBox

一、描述

对话框和消息框通常以符合该平台界面准则的布局呈现按钮。不同的平台总是有不同的对话框布局。 QDialogButtonBox 允许开发人员向其中添加按钮,并且会自动为用户的桌面环境使用适当的布局。

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

  • 接受或拒绝对话。
  • 寻求帮助。
  • 对对话框本身执行操作(例如重置字段或应用更改)。

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

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

    findButton = new QPushButton(tr("&Find"));
    findButton->setDefault(true);

    moreButton = new QPushButton(tr("&More"));
    moreButton->setCheckable(true);
    moreButton->setAutoDefault(false);

或者,QDialogButtonBox 提供了几个可以使用的标准按钮(例如 OK、Cancel、Save)。 它们作为标志存在,因此可以在构造函数中将它们组合在一起。

    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);

    connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);

当在按钮框中单击按钮时,会发出 clicked() 信号,用于实际按下的按钮。 为方便起见,如果按钮具有 AcceptRoleRejectRole HelpRole,则分别发出 accepted()、rejected() 或 helpRequested() 信号。

如果希望特定按钮成为默认按钮,则需要自己调用 QPushButton::setDefault() 。但是,如果没有设置默认按钮并在使用 QPushButton::autoDefault 属性时保留哪个按钮是跨平台的默认按钮,则当 QDialogButtonBox 显示时,具有 AcceptRole 角色的第一个按钮将成为默认按钮,

二、类型成员

1、enum QDialogButtonBox::ButtonLayout:此枚举描述了在排列按钮框中包含的按钮时要使用的布局策略。按钮布局由当前样式(QWidget::style())指定。

  • WinLayout:适用于 Windows 应用程序的策略。
  • MacLayout:适用于 macOS 上的应用程序的策略。
  • KdeLayout:适用于 KDE 应用程序的策略。
  • GnomeLayout:适用于 GNOME 应用程序的策略。
  • AndroidLayout:适用于 Android 应用程序的策略。

2、enum QDialogButtonBox::ButtonRole:此枚举描述了可用于描述按钮框中的按钮的角色。这些角色的组合作为用于描述其行为的不同方面的标志。 

  • InvalidRole:按钮无效。
  • AcceptRole:接受。
  • RejectRole:拒绝。
  • DestructiveRole:放弃更改并关闭对话框。
  • ActionRole:对话框中的元素发生变化。
  • HelpRole:请求帮助。
  • YesRole:“是”按钮。
  • NoRole:“否”按钮。
  • ApplyRole:应用。
  • ResetRole:重置。

3、enum QDialogButtonBox::StandardButton:此枚举描述标准按钮的标志。每个按钮都有一个已定义的 ButtonRole

  • Ok:使用 AcceptRole 定义的“确定”按钮。
  • Open:使用 AcceptRole 定义的“打开”按钮。
  • Save:使用 AcceptRole 定义的“保存”按钮。
  • SaveAll:使用 AcceptRole 定义的“全部保存”按钮。
  • Retry:使用 AcceptRole 定义的“重试”按钮。
  • Ignore:使用 AcceptRole 定义的“忽略”按钮。
  • Cancel:使用 RejectRole 定义的“取消”按钮。
  • Close:使用 RejectRole 定义的“关闭”按钮。
  • Abort:使用 RejectRole 定义的“中止”按钮。
  • Discard:一个“放弃”或“不保存”按钮,取决于平台,用 DestructiveRole 定义。
  • Apply:使用 ApplyRole 定义的“应用”按钮。
  • Reset:使用 ResetRole 定义的“重置”按钮。
  • RestoreDefaults:使用 ResetRole 定义的“恢复默认值”按钮。
  • Help:使用 HelpRole 定义的“帮助”按钮。
  • Yes:使用 YesRole 定义的“是”按钮。
  • YesToAll:一个用 YesRole 定义的“全部同意”按钮。
  • No:使用 NoRole 定义的“否”按钮。
  • NoToAll:使用 NoRole 定义的“拒绝所有”按钮。
  • NoButton:无效按钮。 

三、属性成员 

1、centerButtons : bool

按钮框中的按钮是否居中。默认为 false。

2、orientation : Qt::Orientation

按钮框的方向。默认为水平的(即按钮并排排列)。

3、standardButtons : StandardButtons

按钮框使用哪些标准按钮。

四、成员函数

1、【信号】void accepted()

当单击使用 AcceptRole YesRole 定义的按钮时发出此信号。

2、【信号】void clicked(QAbstractButton *button)

当单击按钮框内的按钮时发出此信号。

3、【信号】void helpRequested()

当单击使用 HelpRole 定义的按钮时发出此信号。

4、【信号】void rejected()

当单击使用 RejectRole NoRole 定义的按钮时发出此信号。

5、void addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role)

将给定按钮添加到具有指定角色的按钮框中。如果角色无效,则不添加按钮。

如果已添加按钮,则将其删除并使用新角色再次添加。

按钮框拥有按钮的所有权。

      QPushButton * addButton(const QString &text, QDialogButtonBox::ButtonRole role)

使用给定文本创建一个按钮,将其添加到指定角色的按钮框,并返回相应的按钮。如果角色无效,则不创建按钮,并返回 nullptr。 

      QPushButton * addButton(QDialogButtonBox::StandardButton button)

如果 button 有效,则将标准按钮添加到按钮框,并返回一个按钮。如果 button 无效,则不添加到按钮框中,返回nullptr。

6、QPushButton * button(QDialogButtonBox::StandardButton which)

返回对应于标准按钮的 QPushButton ,如果标准按钮在此按钮框中不存在,则返回 nullptr。

7、QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button)

返回指定按钮的按钮角色。如果按钮为 nullptr 或尚未添加到按钮框,则返回 InvalidRole

8、QList<QAbstractButton *> buttons()

返回已添加到按钮框中的所有按钮的列表。 

9、void clear()

清除按钮框,删除其中的所有按钮。

10、void removeButton(QAbstractButton *button)

从按钮框中移除按钮而不删除它并将其父级设置为nullptr。

11、QDialogButtonBox::StandardButton standardButton(QAbstractButton *button)

返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回 NoButton。 

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值