赞
踩
本文主要根据QT官方帮助文档以及日常使用,简单的介绍一下QDialogButtonBox的功能以及使用
根据Qt的官方帮助文档中的形容:
QDialogButtonBox是一个放置按钮的盒子,它允许用户添加按钮,并自动按照当前的桌面环境来选择合适的布局。
不同的桌面对应的布局如下:
QDialogButtonBox主要有如下几个点:
排序的模式
这个排序的模式主要对应QDialogButtonBox中的ButtonRole,这个中文翻译翻译成按钮的角色。在QMessageBox中addButton时也要传这个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的作用就是控制按钮的布局位置。
默认按钮(defaultButton)
对于这个QDialogButtonBox可以设置一个默认的按钮,也就是你按下回车(Enter)键时,默认按下的按钮。在界面上展示就是:
QPushButton *pushButton = new QPushButton("Button", this);
pushButton->setDefault(true);
ui->buttonBox->addButton(pushButton, QDialogButtonBox::ResetRole);
调用QPushButton::setDefaule函数来设置为默认按钮。
按钮布局的方向(Orientation)
这个决定了按钮的布局方向,是水平的还是垂直的。
调用setOrientaion(Qt::Orientation orientation)来设置方向,Qt::Orientation有两个值:Qt::Horizontal 和Qt::Vertical。
centerButton
此属性保持按钮框中的按钮是否居中,实际呈现效果如下:
主要的信号有下面这些,当加入的按钮的ButtonRole是AcceptRole、YesRole、RejectRole和NoRole、HelpRole时,会有对应的信号触发
voidQDialogButtonBox::clicked(QAbstractButton *button)
这个信号在点击内部的按钮时,会触发,并且信号的参数是点击的按钮。连接这个信号,可以实现不同的功能。
当按钮的ButtonRole为AcceptRole或者YesRole时,会触发void QDialogButtonBox::accepted()
当按钮的ButtonRole为RejectRole或者NoRole时,会触发void QDialogButtonBox::rejected()
当按钮的ButtonRole为HelpRole时,会触发void QDialogButtonBox::helpRequested()
根据Qt的帮助文档中的介绍,QDialogButtonBox可以添加自定义的按钮,也可以添加StandardButton,下面是两种方法来创建:
创建自定义按钮
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);
创建标准按钮
ui->buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel, this);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。