[Qt 基础内容-05] QDialogButtonBox

QDialogButtonBox

本文主要根据QT官方帮助文档以及日常使用,简单的介绍一下QDialogButtonBox的功能以及使用

简介

根据Qt的官方帮助文档中的形容:
QDialogButtonBox是一个放置按钮的盒子,它允许用户添加按钮,并自动按照当前的桌面环境来选择合适的布局。
不同的桌面对应的布局如下:
在这里插入图片描述

QDialogButtonBox主要有如下几个点:

  1. 排序的模式

      这个排序的模式主要对应QDialogButtonBox中的ButtonRole,这个中文翻译翻译成按钮的角色。在QMessageBoxaddButton时也要传这个ButtonRole参数,当时我就对这个参数的内容和作用一知半解,虽然有在论坛里找到大神的解释,但是也不是很明白。博客如下Qt ButtonRole参数的作用。在看帮助文档对于QDialogButtonBox的介绍时,突然就对这个ButtonRole的作用豁然开朗。
    原来,这个ButtonRole的作用是配合桌面系统来安排对话框按钮的位置。选择不同的Role按钮就会根据桌面系统,来放置到不同的位置。代码试验如下:
    先是设置成ButtonRole::HelpRole

    QPushButton *pushButton = new QPushButton("Button", this);
    ui->buttonBox->addButton(pushButton, QDialogButtonBox::HelpRole);
    

    在这里插入图片描述

    然后再设置成ButtonRole::ResetRole

    QPushButton *pushButton = new QPushButton("Button", this);
    ui->buttonBox->addButton(pushButton, QDialogButtonBox::ResetRole);
    

    在这里插入图片描述

    由上,就可以看出,ButtonRole的作用就是控制按钮的布局位置。

  2. 默认按钮(defaultButton)

    对于这个QDialogButtonBox可以设置一个默认的按钮,也就是你按下回车(Enter)键时,默认按下的按钮。在界面上展示就是:
    在这里插入图片描述

    QPushButton *pushButton = new QPushButton("Button", this);
    pushButton->setDefault(true);
    ui->buttonBox->addButton(pushButton, QDialogButtonBox::ResetRole);
    

    调用QPushButton::setDefaule函数来设置为默认按钮。

  3. 按钮布局的方向(Orientation)

    这个决定了按钮的布局方向,是水平的还是垂直的。
    调用setOrientaion(Qt::Orientation orientation)来设置方向,Qt::Orientation有两个值:Qt::HorizontalQt::Vertical。

  4. centerButton

    此属性保持按钮框中的按钮是否居中,实际呈现效果如下:

    • 不设置居中时:

    在这里插入图片描述

    • 设置居中后

    在这里插入图片描述

信号和槽

主要的信号有下面这些,当加入的按钮的ButtonRole是AcceptRoleYesRoleRejectRoleNoRoleHelpRole时,会有对应的信号触发

  1. voidQDialogButtonBox::clicked(QAbstractButton *button)

    这个信号在点击内部的按钮时,会触发,并且信号的参数是点击的按钮。连接这个信号,可以实现不同的功能。

  2. 当按钮的ButtonRole为AcceptRole或者YesRole时,会触发void QDialogButtonBox::accepted()

  3. 当按钮的ButtonRole为RejectRole或者NoRole时,会触发void QDialogButtonBox::rejected()

  4. 当按钮的ButtonRole为HelpRole时,会触发void QDialogButtonBox::helpRequested()

基本使用

根据Qt的帮助文档中的介绍,QDialogButtonBox可以添加自定义的按钮,也可以添加StandardButton,下面是两种方法来创建:

  1. 创建自定义按钮

    QPushButton *findButton = new QPushButton(tr("&Find"));
    findButton->setDefault(true);
    
    QPushButton *moreButton = new QPushButton(tr("&More"));
    moreButton->setCheckable(true);
    moreButton->setAutoDefault(false);
    
    ui->buttonBox->addButton(findButton, QDialogButtonBox::NoRole);
    ui->buttonBox->addButton(moreButton, QDialogButtonBox::NoRole);
    

    在这里插入图片描述

  2. 创建标准按钮

    ui->buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                         | QDialogButtonBox::Cancel, this);
    

    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44723937/article/details/125860366