[Qt 教程之Widgets模块] —— QDialogButtonBox按钮框

2023-11-05 03:21

本文主要是介绍[Qt 教程之Widgets模块] —— QDialogButtonBox按钮框,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Qt系列教程总目录

文章目录

    • 0. 简介
    • 1. 创建QDialogButtongBox
    • 2. 枚举
      • 2.1. Qt::Orientation
      • 2.2. QDialogButtonBox::ButtonRole
      • 2.3. QDialogButtonBox::StandardButton
    • 3. 成员函数与信号
      • 3.1. 按钮排列方式
      • 3.2. 添加与删除按钮
      • 3.3. 按钮与角色
      • 3.4. 标准按钮
      • 3.5. 按钮居中

0. 简介

QDialogButtongBox是一个包含很多按钮的控件,对话框中有多个需要分组排列的按钮时,可以使用QDialogButtongBox类。
开发人员可以向QDialogButtonBox添加按钮,QDialogButtonBox会根据平台自动使用合适的布局。

Qt Creator 添加新文件的对话框和Photoshop调整曲线的对话框都可以使用QDialogButtonBox来处理:

在这里插入图片描述

在这里插入图片描述

1. 创建QDialogButtongBox

QDialogButtongBox有4个构造函数,

QDialogButtonBox(QWidget *parent = nullptr);
QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr);
explicit QDialogButtonBox(StandardButtons buttons, QWidget *parent = nullptr);
QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr);

同样可以通过拖动控件创建,也可以使用代码直接创建,控件创建默认使用构造函数QDialogButtonBox(QWidget *parent = nullptr);,控件创建会默认添加cancelok两个标准按钮。

对于其他三个构造函数的参数,其中,Qt::Orientation是枚举,可以指定按钮纵向或横向排列(如上图两个例子);StandardButtons也是枚举,用于指定标准按钮。

如下图创建了四个QDialogButtonBox,其中,第一行通过拖拽控件创建,其余通过代码直接创建,依次使用了上面四个构造函数:

在这里插入图片描述

2. 枚举

QDialogButtonBox有用到一些枚举变量,详见下方:

2.1. Qt::Orientation

按钮排列方式

enum Orientation {Horizontal = 0x1,Vertical = 0x2
};

说明:

ConstantValueDescription
Qt::Horizontal0x1水平排列
Qt::Vertical0x2垂直排列

2.2. QDialogButtonBox::ButtonRole

描述按钮角色,不同角色的按钮有不同的行为

enum ButtonRole {InvalidRole = -1,AcceptRole,RejectRole,DestructiveRole,ActionRole,HelpRole,YesRole,NoRole,ResetRole,ApplyRole,NRoles
};

说明:

ConstantValueDescription
QDialogButtonBox::InvalidRole-1无效按钮
QDialogButtonBox::AcceptRole0单击按钮可接受对话框(如OK按钮)
QDialogButtonBox::RejectRole1单击按钮可接受对话框(如Cancel按钮)
QDialogButtonBox::DestructiveRole2单击该按钮会导致破坏性更改(例如“放弃更改”)并关闭对话框
QDialogButtonBox::ActionRole3单击该按钮将更改对话框中的元素
QDialogButtonBox::HelpRole4单击按钮可请求帮助
QDialogButtonBox::YesRole5类似于“是”的按钮
QDialogButtonBox::NoRole6类似于“否”的按钮
QDialogButtonBox::ResetRole7该按钮将对话框的字段重置为默认值
QDialogButtonBox::ApplyRole8按钮应用当前更改

2.3. QDialogButtonBox::StandardButton

标准按钮

enum StandardButton {NoButton           = 0x00000000,Ok                 = 0x00000400,Save               = 0x00000800,SaveAll            = 0x00001000,Open               = 0x00002000,Yes                = 0x00004000,YesToAll           = 0x00008000,No                 = 0x00010000,NoToAll            = 0x00020000,Abort              = 0x00040000,Retry              = 0x00080000,Ignore             = 0x00100000,Close              = 0x00200000,Cancel             = 0x00400000,Discard            = 0x00800000,Help               = 0x01000000,Apply              = 0x02000000,Reset              = 0x04000000,RestoreDefaults    = 0x08000000,#ifndef Q_MOC_RUNFirstButton        = Ok,LastButton         = RestoreDefaults
#endif
};

说明:

ConstantValueDescription
QDialogButtonBox::Ok0x00000400AcceptRole角色下定义的Ok按钮
QDialogButtonBox::Open0x00002000AcceptRole角色下定义的Open按钮
QDialogButtonBox::Save0x00000800AcceptRole角色下定义的Save按钮
QDialogButtonBox::Cancel0x00400000RejectRole角色下定义的Cancel按钮
QDialogButtonBox::Close0x00200000RejectRole角色下定义的Close按钮
QDialogButtonBox::Discard0x00800000DestructiveRole角色下定义的Discard或Don’t Save按钮,具体取决于使用的平台
QDialogButtonBox::Apply0x02000000ApplyRole角色下定义的Apply按钮
QDialogButtonBox::Reset0x04000000ResetRole角色下定义的Reset按钮
QDialogButtonBox::RestoreDefaults0x08000000ResetRole角色下定义的RestoreDefaults按钮
QDialogButtonBox::Help0x01000000HelpRole角色下定义的Help按钮
QDialogButtonBox::SaveAll0x00001000AcceptRole角色下定义的Save All按钮
QDialogButtonBox::Yes0x00004000YesRole角色下定义的Yes按钮
QDialogButtonBox::YesToAll0x00008000YesRole角色下定义的Yes to All按钮
QDialogButtonBox::No0x00010000NoRole角色下定义的No按钮
QDialogButtonBox::NoToAll0x00020000NoRole角色下定义的No to All按钮
QDialogButtonBox::Abort0x00040000RejectRole角色下定义的Abort按钮
QDialogButtonBox::Retry0x00080000AcceptRole角色下定义的Retry按钮
QDialogButtonBox::Ignore0x00100000AcceptRole角色下定义的Ignore按钮
QDialogButtonBox::NoButton0x00000000无效按钮

3. 成员函数与信号

QDialogButtonBox 公有继承与QWidget,所以QWidget的公有成员函数QDialogButtonBox都能使用。

QDialogButtonBox的成员函数如下:

3.1. 按钮排列方式

函数原型描述
void setOrientation(Qt::Orientation orientation);设置按钮排列方式,Qt::Orientation为枚举
Qt::Orientation orientation() const;获取按钮排列方式

3.2. 添加与删除按钮

函数原型描述
void addButton(QAbstractButton *button, ButtonRole role);将给定按钮添加到具有指定角色的按钮框中。如果角色无效,则不添加按钮。
如果已添加按钮,则将其删除并使用新角色再次添加
按钮框拥有按钮的所有权。
QPushButton *addButton(const QString &text, ButtonRole role);使用给定文本创建一个按钮,将其添加到指定角色的按钮框,并返回相应的按钮。如果角色无效,则不创建按钮,并返回 nullptr。
QPushButton *addButton(StandardButton button);如果 button 有效,则将标准按钮添加到按钮框,并返回一个按钮。
如果 button 无效,则不添加到按钮框中,返回nullptr。
void removeButton(QAbstractButton *button);从按钮框中移除按钮而不删除它并将其父级设置为nullptr。
void clear();清除按钮框,删除其中的所有按钮。

3.3. 按钮与角色

函数原型描述
QList<QAbstractButton *> buttons() const;返回已添加到按钮框中的所有按钮的对象列表。
ButtonRole buttonRole(QAbstractButton *button) const;返回指定按钮的按钮角色。
如果按钮为 nullptr 或尚未添加到按钮框,则返回 InvalidRole。按钮角色具体见枚举QDialogButtonBox::ButtonRole

3.4. 标准按钮

函数原型描述
void setStandardButtons(StandardButtons buttons);为按钮框添加标准按钮,入参为StandardButton枚举,可多个(使用|拼接)
StandardButtons standardButtons() const;返回该按钮框已添加的标准按钮
StandardButton standardButton(QAbstractButton *button) const;返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回 NoButton。
QPushButton *button(StandardButton which) const;返回一个标准按钮类型的QPushButton按钮对象指针

3.5. 按钮居中

函数原型描述
void setCenterButtons(bool center);设置按钮框中的按钮居中
bool centerButtons() const;返回钮框中的按钮是否设置了居中

这篇关于[Qt 教程之Widgets模块] —— QDialogButtonBox按钮框的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/347076

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

python库fire使用教程

《python库fire使用教程》本文主要介绍了python库fire使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1.简介2. fire安装3. fire使用示例1.简介目前python命令行解析库用过的有:ar

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模