QT软件开发之基础控件--2.1.6 buttonBox按钮盒

2.1.6 buttonBox按钮盒

 

按钮盒(ButtonBox)可以很方便地快速布置一组标准按钮,比如:常见的确认对话框有 “OK”“Cancel”等标准按钮,Qt 将这些典型的按钮做成标准按钮盒,并将相应的信号加以封装,方便程序员使用,它有水平和垂直两种样式。

创建ButtonBox按钮盒示例

QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                           | QDialogButtonBox::Cancel,this);

按钮盒标准按钮的枚举值:

常量

数值

描述

QDialogButtonBox::Ok

0x00000400

Ok

QDialogButtonBox::Open

0x00002000

Open

QDialogButtonBox::Save

0x00000800

Save

QDialogButtonBox::Cancel

0x00400000

Cancel

QDialogButtonBox::Close

0x00200000

Close

QDialogButtonBox::Discard

0x00800000

Discard

QDialogButtonBox::Apply

0x02000000

Apply

QDialogButtonBox::Reset    

0x04000000

Reset

QDialogButtonBox::RestoreDefaults

0x08000000

RestoreDefaults

QDialogButtonBox::Help

0x01000000

Help

QDialogButtonBox::SaveAll

0x00001000

SaveAll

QDialogButtonBox::Yes

0x00004000

Yes

QDialogButtonBox::YesToAll

0x00008000

YesToAll

QDialogButtonBox::No

0x00010000

No

QDialogButtonBox::NoToAll

0x00020000

NoToAll

QDialogButtonBox::Abort

0x00040000

Abort

QDialogButtonBox::Retry    

0x00080000

Retry

QDialogButtonBox::Ignore

0x00100000

Ignore

QDialogButtonBox::NoButton

0x00000000

NoButton

常用的成员函数

(1)向按钮盒里添加按钮button,定义按钮button的角色为role,如果role无效,则不添加按钮,如果按钮已添加则移除并再次添加为新按钮。

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

(2)创建一个按钮的文本为text,以指定角色添加到按钮盒,并返回相应的按钮,如果role是无效的,就不创建按钮,返回0。

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

(3)向按钮盒中添加一个标准按钮button,并返回标准按钮。如果按钮无效,不添加,返回0。

QPushButton * QDialogButtonBox::addButton(StandardButton button)

(4)清除按钮盒,删除所有按钮。

void QDialogButtonBox::clear()

(5)移出按钮盒里的按钮button,不删除,设置它的父窗口为0。

void QDialogButtonBox::removeButton(QAbstractButton * button)

(6)对应给定的按钮,返回标准按钮枚举值,如果给定的按钮并不是一个标准的按钮,则返回NoButton。

StandardButton QDialogButtonBox::standardButton(QAbstractButton * button) const

(7)返回按钮盒对应的标准按钮QPushButton,如果不是标准按钮,则返回0,表示该按钮在这个按钮盒子里不存在。在按钮盒的槽函数里,可以用该函数区分当前是哪一个按钮按下。

QPushButton * QDialogButtonBox::button(StandardButton which) const

按钮相关的信号

(1)单击按钮盒里的定义为AcceptRole(确定)和YesRole角色的按钮时,发射该信号。

void QDialogButtonBox::accepted()

(2)单击按钮盒里的按钮时,发射该信号

void QDialogButtonBox::clicked(QAbstractButton * button)

(3)单击按钮盒里的定义为HelpRole(帮助)角色的按钮时,发射该信号。

void QDialogButtonBox::helpRequested()

(4)单击按钮盒里的定义为RejectRole(拒绝)和(否)NoRole角色的按钮时,发射该信号。

void QDialogButtonBox::rejected()

打开 QtCreator,新建一个 Qt Widgets Application 项目,继承Qwidget类。编写例子程序,实现命令按钮的运用。(配套程序编号CH2-5)

widget.ui文件示例QT软件开发之基础控件--2.1.6 buttonBox按钮盒

图2-12 UI设计界面

widget.c文件(槽函数处理代码)

void Widget::on_buttonBox_clicked(QAbstractButton *button)
{
    QString str="按钮盒测试";
    QString button_str="点击的按钮=";
    if(ui->buttonBox->button(QDialogButtonBox::Ok)==(QPushButton*)button)
    {
        //弹窗显示
        button_str+="OK";
        QMessageBox::information(this,str,button_str);
    }
    else if(ui->buttonBox->button(QDialogButtonBox::Cancel)==(QPushButton*)button)
    {
        button_str+="Cancel";
        QMessageBox::information(this,str,button_str);
    }
    else if(ui->buttonBox->button(QDialogButtonBox::Open)==(QPushButton*)button)
    {
        button_str+="open";
        QMessageBox::information(this,str,button_str);
    }
}

 运行效果

QT软件开发之基础控件--2.1.6 buttonBox按钮盒

图2-13 运行效果

上一篇:vue+swiper使用


下一篇:2022/1/13学习总结