2.1Qt基础按钮控件

这篇具有很好参考价值的文章主要介绍了2.1Qt基础按钮控件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2.1按钮控件组

QT Creator UI 设计界面的按钮组截图如下:

qt switch,C++,QT,嵌入式学习,qt,ui,开发语言

以下是对按钮组控件的一些功能介绍:

  1. Push Button 按压按钮:最普通的按钮,按(点击)按钮命令计算机执行一些动作,或者回答问题,比如

windows 开始菜单里的重启,注销,关机等按钮。

  1. Tool Button 工具按钮:工具按钮通常是一个集合,一般集成在工具栏里。比如打开,保存,复制,粘

贴,剪切等常用的操作。

  1. Radio Button 单选按钮:单选按钮通常是两个以上的形式出现在一块,按钮之间有互斥关系,每次只能

选中一个。比如:一个人的性别只能选择一个,不能同时是男性又是女性。

  1. Check Box 复选框:复选框与单选按钮概念相反,复选框通常表示多个可以同时存在的选项,比如一个

人可以同时拥有多个爱好,比如读书、看电影、爬山、游泳等。

  1. Command Link Button 命令链接按钮:一般用来打开的窗口或者网页链接。

  2. Dialog Button Box 标准按钮盒:标准按钮盒通常用于对话框程序;比如:常见的确认对话框有 “确定”

“取消”等标准按钮,Qt 将这些典型的按钮做成标准按钮盒,并将相应的信号加以封装,方便程序员

使用。

2.1.1QAbstractButton 类

在学习按钮控件之前必须先了解这些控件类的继承关系,QAbstractButton 类是所有按钮控件的基类,派生了

QCheckBox, QPushButton, QRadioButton, QToolButton 类。QAbstractButton 类继承于 QWidget,QWidget 类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按 Z 轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。以下介绍按钮类(QAbstractButton)常用接口函数和信号槽。

  • 函数接口

    1)设置按钮文本

    QString text() const//获取按钮上显示的文本
    void setText(const QString &text)//设置按钮上显示的文本
    

    2)设置按钮图标

    图标有QIcon类进行描述

    QIcon icon() const//用于显示当前按钮上显示的图标
    void setIcon(const QIcon &icon)//设置显示按钮
    

    3)设置图标显示尺寸

    图标的尺寸由类 QSize 表示。

    QSize iconSize() const
    void setIconSize(const QSize &size)
    

    4)判断按钮是否按下

    bool isDown() const
    void setDown(bool)
    

    按钮按下返回 true,否则返回 false。setDown(bool)用于手动设置按钮的状态。

    5)判断按钮是否选中

    bool isChecked() const
    void setChecked(bool)
    

    该属性只用于复选框按钮,isChecked()判断复选框按钮是否选中;

    setChecked()手动设置复选框的状态。当复选框的状态发生改变时将发出 toggled()信号。

    6)判断是否是复选按钮

    bool isCheckable() const
    void setCheckable(bool)
    

    该属性只用于复选框按钮,isCheckable()检查按钮是否可以复选。setCheckable(bool)设置按钮是否支持复选。

    7)设置按钮的可用性

    bool isEnabled() const
    void setEnabled(bool)
    

    该属性设置按钮是否可以使用;如果为假,按钮显示为灰色状态,无法使用。有些情况下,按钮需要等待一些条件成立才能使用,就可以使用 setEnabled 函数设置状态。

    8)设置按钮快捷键

    QKeySequence shortcut() const
    void setShortcut(const QKeySequence &key)
    

    QkeySequence 属性保存了按钮的快捷键方式,按下键盘上的组合键快速按下按钮。该属性在常用的软件中基本都能看到。

    例如:

    设置按钮的快捷方式为“ALT+F1";

    ui->pushButton->setShortcut(tr("Alt+F1"));
    
  • 按钮常用的槽函数(其他槽函数可以看QWidget类)

    1)执行一个点击事件

    void QAbstractButton::click()
    

    执行以上函数相当于执行了一个点击按钮的操作。与鼠标点击按钮效果一样

    2)切换按钮的状态

    void QAbstractButton::toggle()
    

    如果按钮是按下的状态,执行 toggle()函数按钮就变为松开状态,相反也一样。

  • 按钮常用的信号

    1)点击信号

    按钮按下后松开发出的信号(按下+松开才算一个点击动作)。

    void QAbstractButton::clicked(bool checked = false)
    

    2)按下信号

    void QAbstractButton::pressed()
    

    按钮按下后发出的信号。可用于检测按钮是否按下。

    3)释放信号

    void QAbstractButton::released()
    

    按钮松开发出的信号。可用于检测按钮是否松开

2.1.2QPushButton 按钮

QPushButton 按钮是最普通的按压按钮,使用的最为普遍,几乎图形界面都会用到。QPushButton 按钮通常是

一个矩形,并且显示一个文本标签描述本身的功能。

  1. 创建一个QPushButton 按钮示例

    QPushButton *button = new QPushButton("Download", this);
    
  2. QPushButton 按钮支持设置菜单显示,以下函数用于设置按钮显示菜单,后面章节会讲到该属性的使用

    案例。

void QPushButton::setMenu(QMenu *menu)
void QPushButton::showMenu()

​ 3.设置QPushButton按钮支持响应回车键

bool isDefault() const
void setDefault(bool)

相当于设置回车键为该按钮的快捷键,一般的对话框按钮都支持回车键确认

实例:

我们这里使用纯代码的形式创建一个按钮,将按钮的信号关联确切到槽,当按钮按下和松开的时候设置按钮显示的文本

打开 QtCreator,新建一个 Qt Widgets Application 项目,在新建项目的向导里填写:

①项目名称QtPushButton,创建的路径选择英文路径,点击下一步;

②套件选择里面选择全部套件,点击下一步;

③基类选择 QWidget,其他的选项默认,点击下一步;

④项目管理不修改,点击完成。

  • widget.h 文件代码:
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QDebug>//用于打印输出
#include<QPushButton>//按钮

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    QPushButton *mybutton;//定义指针
public slots://定义槽函数
    void QPushButton_released_Slots();
    void QPushButton_pressed_Slots();
    void QPushButton_clicked_Slots();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

  • widget.cpp文件代码:
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建一个按钮对象
    mybutton = new QPushButton("QPushButton",this);
    //设置按钮的大小和位置
    mybutton->setGeometry(QRect(QPoint(50,50),QSize(200,50)));
    //将按钮发出的信号连接到确切的槽函数
    connect(mybutton,SIGNAL(released()),this,SLOT(QPushButton_released_Slots()));
    connect(mybutton,SIGNAL(pressed()),this,SLOT(QPushButton_pressed_Slots()));
    connect(mybutton,SIGNAL(clicked()),this,SLOT(QPushButton_clicked_Slots()));

    //设置响应的回车键
    mybutton->setDefault(true);
    //设置按钮获取输入焦点
    mybutton->setFocus();
    //设置阿牛快捷键
    mybutton->setShortcut(tr("Ctrl+p"));
}

Widget::~Widget()
{
    delete ui;
}
//槽函数:按钮松开
void Widget::QPushButton_released_Slots()
{
    //设置按钮上显示的文本
    mybutton->setText("按钮松开状态");
}
//槽函数:按钮按下
void Widget::QPushButton_pressed_Slots()
{
     mybutton->setText("按钮按下状态");
}
//槽函数:点击信号
void Widget::QPushButton_clicked_Slots()
{
     qDebug()<<"按钮被点击";
}

  • 运行效果

qt switch,C++,QT,嵌入式学习,qt,ui,开发语言

2.1.3 QRadioButton 按钮

QRadioButton 单选按钮一般用与多选一的互斥选择,可以通过 isChecked()函数检测是否选择;同一个父窗口内的单选按钮都是互斥的,每次只能选中一个。

⚫ 创建 QRadioButton 单选按钮示例:

QRadioButton *button =new QRadioButton("Radiobutton",this);

如果在同一个父窗口内需要定义多组单选按钮,需要使用 QButtonGroup 进行分组。QButtonGroup 类提供了一个按钮部件的抽象容器组,它不提供可视化显示功能,用来管理组中的每个按钮状态。

⚫ 新建分组示例:

QButtonGroup *gender_Group = new QButtonGroup(this); //新建分组
  1. 向分组中添加按钮使用 addButton 函数。addButton 函数原型如下:
void QButtonGroup::addButton(QAbstractButton *button, int id = -1)

参数:

QAbstractButton * button:QAbstractButton 按钮

id:设置单选按钮唯一的 id。(不能是负数,负数表示不设置 ID)

  1. 删除分组中的按钮使用 removeButton 函数
void QButtonGroup::removeButton(QAbstractButton *button)
  1. 获取 QButtonGroup 分组选中的 ID
int QButtonGroup::checkedId() const
  1. QButtonGroup 支持的信号
void buttonClicked(QAbstractButton *button) //分组中的按钮被点击,传递的为按钮的指针。
void buttonClicked(int id) //形参传递的是按钮 ID
void buttonPressed(QAbstractButton *button)//分组中的按钮被按下
void buttonPressed(int id)
void buttonReleased(QAbstractButton *button)//分组中的按钮松开
void buttonReleased(int id)

⚫ 打开 QtCreator,新建一个 Qt Widgets Application 项目,继承 Qwidget 类编写一个例子程序,实现单选按钮的运用。

  1. widget.ui 界面文件设计示例

qt switch,C++,QT,嵌入式学习,qt,ui,开发语言
2.widget.h 文件代码示例

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QButtonGroup>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
 Q_OBJECT
public:
 explicit Widget(QWidget *parent = 0);
 ~Widget();
 QButtonGroup *gender_Group; //性别选择组
 QButtonGroup *marriage_Group; //婚姻状况选择组
private slots:
 void on_pushButton_ok_clicked();
 void gender_Group_slots(int id); //槽函数
 void marriage_Group_slots(int id);
private:
 Ui::Widget *ui;
};
#endif // WIDGET_H

3.widget.cpp 文件代码示例

#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>//消息对话框


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //性别选择组--新建分组,向分组中添加按钮使用addButton函数
    gender_Group = new QButtonGroup(this);
    gender_Group->addButton(ui->radioButton_boy,0);//添加按钮,设置ID
    gender_Group->addButton(ui->radioButton_girl,1);

    //婚姻状况选择组
    marriage_Group = new QButtonGroup(this);
    marriage_Group->addButton(ui->radioButton_not,0);
    marriage_Group->addButton(ui->radioButton_ok,1);

    //关联三个分组的信号与槽
    connect(gender_Group,SIGNAL(buttonClicked(int)),this,SLOT(gender_Group_slots(int)));
    connect(marriage_Group,SIGNAL(buttonClicked(int)),this,SLOT(marriage_Group_slots(int)));
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_ok_clicked()));


}

Widget::~Widget()
{
    delete ui;
}



void Widget::on_pushButton_ok_clicked()
{
    QString str;//存放显示的结果
    int genderID = gender_Group->checkedId();//获取分组中的ID
    int marriageID=marriage_Group->checkedId();

    //根据按下的ID区分按键
    switch (genderID) {
    case 0:
        str+="性别:男\n";
        break;
    case 1:
        str+="性别:女\n";
        break;
    default:
        break;
    }

    switch (marriageID) {
    case 0:
       str+="婚姻状况:未婚\n";
        break;
    case 1:
        str+="婚姻状况:已婚\n";
        break;
    default:
        break;
    }

    //弹出消息框
    QMessageBox::information(this,tr("选择结果"),str,QMessageBox::Ok);
}


//性别选择
void Widget::gender_Group_slots(int id)
{
    QString str;
    //根据按下的ID区分按键
    switch (id) {
    case 0:
        str+="性别:男\n";
        break;
    case 1:
        str+="性别:女\n";
        break;
    default:
        break;
    }
    //弹出消息框
    QMessageBox::information(this,tr("选择结果"),str,QMessageBox::Ok);
}



//分组选择
void Widget::marriage_Group_slots(int id)
{
    QString str;
    switch (id) {
    case 0:
        str+="婚姻状况:未婚";
        break;
    case 1:
        str+="婚姻状况:已婚";
        break;
    default:
        break;
    }
    //弹出消息框
    QMessageBox::information(this,tr("选择结果"),str,QMessageBox::Ok);
}



4.运行效果
qt switch,C++,QT,嵌入式学习,qt,ui,开发语言
qt switch,C++,QT,嵌入式学习,qt,ui,开发语言
qt switch,C++,QT,嵌入式学习,qt,ui,开发语言

2.1.4 checkBox 按钮

复选按钮的选项可以多选,,而且多个复选按钮之间是不冲突的,复选按钮状态发生改变时,会发出 toggled()信号,按钮的基本使用方法与单选按钮一样。如果使用了多组复选按钮可以使用 groupBox 控件进行分组,groupBox 控件不会改变复选框的属性。复选框使用了 QButtonGroup 进行分组,就变成了单选按钮。

⚫ 创建复选按钮示例:

QCheckBox *checkbox = new QCheckBox("sensitive", this);

复选按钮除了普通的选择以外,还提供了三态效果;用来表示未选中、选中、全部选中三种显示效果。相关的函数接口如下:

  1. 判断按钮是否支持三态显示
void setTristate(bool y = true);
bool isTristate() const;

支持三态显示返回 true,否则返回 false。可以通过 setTristate 函数决定按钮是否支持三态显示。

  1. 获取三态复选框的状态
void QCheckBox::setCheckState(Qt::CheckState state)
Qt::CheckState QCheckBox::checkState() const

setCheckState 用于设置状态,checkState()用于获取状态。

三态复选框的状态枚举 enum Qt::CheckState 共有三个枚举常量

枚举常量 数值 描述
Qt::Unchecked 0 未选中
Qt::PartiallyChecked 1 选择部分
Qt::Checked 2 全部选中
  1. 三态复选框状态改变信号
void QCheckBox::stateChanged(int state)

stateChanged 信号发出时就表示三态复选按钮的状态发生了改变,state 参数就表示当前的状态。

实例:

  • 创建一个新项目,继承Qwidget类,实现复选按钮

    1)widget.ui文件设计界面示例

    控件:gruopBox,单文本编辑器lineEdit

    作用:gruopBox是一个带有标题的分组框,lineEdit用来获取输入的文本

qt switch,C++,QT,嵌入式学习,qt,ui,开发语言
2) widget.h 文件代码示例

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots://槽函数
    void on_pushButton_showresult_clicked();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

  1. widget.cpp 文件代码示例
#include "widget.h"
#include "ui_widget.h"

#include<QMessageBox>//消息对话框
#include<QDebug>//调试

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置按钮支持三态显示
    ui->checkBox_showstate->setTristate(true);
    //设置单选按钮的默认状态
    ui->radioButton_boy->setChecked(true);

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_showresult_clicked()));
}

Widget::~Widget()
{
    delete ui;
}

//显示选择结果
void Widget::on_pushButton_showresult_clicked()
{
    int count=0; //记录选择的数量
    QString text="选择结果:\n"; //存放选择结果
    /**************姓名***************/
    text+="姓名: ";
    text+=ui->lineEdit->text();
    text+="\n";
    /**************性别***************/
    text+="性别: ";
    if(ui->radioButton_boy->isChecked())
    {
        text+="男\n";
    }
    if(ui->radioButton_lady->isChecked())
    {
        text+="女\n";
    }
    /**************兴趣爱好***************/
    text+="兴趣爱好: \n";
    if(ui->checkBox->isChecked())
    {
        text+="羽毛球 ";
        count++;
    }
    if(ui->checkBox_2->isChecked())
    {
        text+="看书 ";
        count++;
    }
    if(ui->checkBox_3->isChecked())
    {
        text+="游泳 ";
        count++;
    }
    if(ui->checkBox_4->isChecked())
    {
        text+="玩游戏 ";
        count++;
    }
    if(ui->checkBox_5->isChecked())
    {
        text+="骑行 ";
        count++;
    }
    if(ui->checkBox_6->isChecked())
    {
        text+="旅游 ";
        count++;
    }
    text+="\n";
    /*弹出消息框*/
    QMessageBox::information(this, tr("选择结果"),text,QMessageBox::Ok);
    /*设置三态显示*/
    switch(count)
    {
    case 0://未选中
        ui->checkBox_showstate->setCheckState(Qt::Unchecked);
        break;
    case 1://部分选中
        ui->checkBox_showstate->setCheckState(Qt::PartiallyChecked);
        break;
    case 6: //全选
        ui->checkBox_showstate->setCheckState(Qt::Checked);
        break;
    }
}

  1. 运行效果
    qt switch,C++,QT,嵌入式学习,qt,ui,开发语言

2.1.5 commandLinkButton 按钮

CommandLinkButton 控件(命令链接按钮)继承自 QPushButton,CommandLinkButton 控件是一种 Windows Vista 风格的命令链接按钮,它和 RadioButton 相似,都是用于在互斥选项中选择一项。表面上同平面按钮一样,但是 CommandLinkButton 除带有正常的按钮上的文字描述文本外,默认情况下,它也将携带一个箭头图标,表明按下按钮将打开另一个窗口或页面,图标可以通过 setIcon 函数进行更换设置。

  • 创建CommandLinkButton 按钮示例:

    QCommandLinkButton *linkbutton = new QCommandLinkButton("主文本显示","扩展文本显示", this);
    linkbutton->setGeometry(QRect(QPoint(50,50), QSize(200, 80))); //设置按钮的显示位置与大小
    
  1. 可以通过 setDescription 函数可以设置命令按钮扩展的文本描述信息,扩展显示通常会比当前字体稍小,一般用来描述按钮的详细功能。
QString description() const 获取命令按钮上扩展显示的文本
void setDescription(const QString & description) 设置命令按钮显示扩展的文本
  • 命令按钮表明按下将打开另一个窗口或页面,这个功能需要通过静态函数 openUrl 实现。

使用 openUrl 需要包含#include <QDesktopServices>头文件

openUrl 函数原型:

bool QDesktopServices::openUrl(const QUrl & url) 如果成功返回 true,否则返回 false

参数解析:

QUrl 是用于描述网页链接或本地文件链接的类。使用 QUrl 需要包含#include <QUrl>头文件。

1)打开一个网站示例

QDesktopServices::openUrl( QUrl("https://www.baidu.com/"));

2)打开一个windows下的文件夹示例

QDesktopServices::openUrl( QUrl("file:///D:/QT_XX"));

file:///是三根右斜杠,表示打开本地文件系统里的文件夹或文件。URL 里面全部是用右斜杠。

示例:

1)创建一个继承Widget的项目,实现命令按钮的运用
2)ui界面
qt switch,C++,QT,嵌入式学习,qt,ui,开发语言
2)widget.cpp代码

#include "widget.h"
#include "ui_widget.h"
#include<QDesktopServices>//使用openUrl需要的头文件
#include<QUrl>//使用QUrl包含的头文件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
        ui->setupUi(this);
     //通过代码编写的方式,创建按钮
     QCommandLinkButton *btn = new QCommandLinkButton("主文本显示","扩展文本显示", this);
     btn->setGeometry(QRect(QPoint(400,50), QSize(200, 200))); //设置按钮的显示位置与大小
     btn->setText("打开网页");   //修改标题主文本显示
     btn->setDescription("https://www.bilibili.com/");  //修改描述

     connect(btn,SIGNAL(clicked()),this,SLOT(on_btn_clicked()));
}

Widget::~Widget()
{
    delete ui;
}
//打开网页
void Widget::on_commandLinkButton_clicked()//右键单击槽自动生成的槽函数
{
    //用来显示命令按钮扩展的文本信息内容,字体比当前字体稍小
    QDesktopServices::openUrl(QUrl("http://www.baidu.com/"));
}
//打开目录
void Widget::on_commandLinkButton_openDir_clicked()
{

     QDesktopServices::openUrl(QUrl("file:///D:/"));

}
void Widget::on_btn_clicked()
{
    QDesktopServices::openUrl(QUrl("https://www.bilibili.com/"));
}

3)widget.h代码

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:

private slots:
    void on_commandLinkButton_clicked();//自动关联

    void on_commandLinkButton_openDir_clicked();

    void on_btn_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

4)运行结果
打开网页或者打开目录会进行相应的跳转
qt switch,C++,QT,嵌入式学习,qt,ui,开发语言

2.1.6 buttonBox 按钮盒

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

  • 创建ButtonBox按钮盒示例

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

    常量 数值 描述
    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)
  1. 单击按钮盒里的定义为 HelpRole(帮助)角色的按钮时,发射该信号。
void QDialogButtonBox::helpRequested()

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

void QDialogButtonBox::rejected()

示例:实现命令按钮的运用

1)ui 界面的设计

双击widget.ui进入页面设计,选择Buttons中 的Dialog Button Box 拖拽到界面上,在右下角的属性中找到选择标准按钮值standardButtons选择所需要的

选择完成后,会自动添加到界面上。

qt switch,C++,QT,嵌入式学习,qt,ui,开发语言
2)头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QAbstractButton>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    //单击控件右键转到槽函数
    void on_buttonBox_clicked(QAbstractButton *button);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

3)widget.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include<QDialogButtonBox>
#include<QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_buttonBox_clicked(QAbstractButton *button)
{
    QString str = "按钮盒测试";
    QString btn_str = "点击的按钮";
    if(ui->buttonBox->button(QDialogButtonBox::Ok)==(QPushButton*)button)
    {
        //消息对话框提示
        btn_str+="ok";
        QMessageBox::information(this,str,btn_str);
    }
    else if(ui->buttonBox->button(QDialogButtonBox::Cancel)==(QPushButton*)button)
    {
        btn_str+="cancel";
        QMessageBox::information(this,str,btn_str);
    }
    else if(ui->buttonBox->button(QDialogButtonBox::Open)==(QPushButton*)button)
    {
        btn_str+="open";
        QMessageBox::information(this,str,btn_str);
    }

}

4)运行效果

qt switch,C++,QT,嵌入式学习,qt,ui,开发语言文章来源地址https://www.toymoban.com/news/detail-740459.html

到了这里,关于2.1Qt基础按钮控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【嵌入式Qt开发入门】初识Qt——Linux下安装Qt

            Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面(Graphical User Interface,简 称 GUI)程序。         Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部; Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多

    2024年02月16日
    浏览(60)
  • 嵌入式Qt Qt中的信号处理

    Qt消息模型: - Qt封装了具体操作系统的消息机制 - Qt遵循经典的GUI消息驱动事件模型 Qt中定义了与系统消息相关的概念;   Qt中的消息处理机制: Qt的核心 QObject::cinnect函数: Qt中的“新”: 实验1 初探信号与槽   运行结果: - 只有QObject的子类才能自定义槽 - 定义槽的

    2024年02月22日
    浏览(53)
  • Qt QCheckBox复选按钮控件

    Qt中的复选按钮类是 QCheckBox 它和单选按钮很相似,单选按钮常用在“多选一”的场景,而复选按钮常用在\\\"多选多\\\"的场景 比如喜欢的水果选项中,可以在“苹果/桃/梨/橘子/香蕉”中选择多个。 QRadioButton 有很多属性,完整的可查看帮助文档。这里列出常用的属性和方法。 这

    2024年02月01日
    浏览(48)
  • Qt QRadioButton单选按钮控件

    Qt中的单选按钮类是 QRadioButton 它是一个可以切换选中( checked )或未选中( unchecked )状态的单选按钮 单选按钮常用在“多选一”的场景,也就是说,在一组单选按钮中,一次只能选中一个单选按钮 比如性别中的“男女”二选一,学历中的“博士/硕士/本科/其他”四选一,

    2024年02月03日
    浏览(49)
  • QT学习07:五种按钮控件

    文章首发于我的个人博客:欢迎大佬们来逛逛 完整Qt学习项目地址:源码地址 是所有按钮类的祖先。 QAbstractButton的信号 : void clicked (bool checked = false) : 是否选中按钮 void pressed (): 点击按钮 void released (): 释放按钮 void toggled (bool checked): 检测 是否被选中 最常用的按钮控

    2024年02月09日
    浏览(45)
  • QT学习 控件(一):五种按钮类

    QAbstractButton的信号 : void clicked(bool checked = false) : 是否选中按钮 void pressed(): 点击按钮 void released(): 释放按钮 void toggled(bool checked): 切换按钮的状态 最常用的按钮控件之一。 构造函数: 设置图标,文本信息,父窗口 常用操作: 序号 函数描述 1 int void setAutoDefault(bool) 设

    2024年02月02日
    浏览(53)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

            绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线 图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关

    2024年02月12日
    浏览(48)
  • Qt固件映像 Raspberry Pi 嵌入式C++(Qt)编程

    在我们的游戏中,我们有一个桨、一个球和三十块砖。 计时器用于创建游戏周期。 我们不处理角度,我们只是改变方向:上、下、左、右。 Qt5 库是为创建计算机应用程序而开发的。尽管如此,它也可以用来创建游戏。开发计算机游戏是了解有关 Qt5 的更多信息的好方法。

    2024年01月19日
    浏览(43)
  • 【嵌入式——QT】容器类

    Qt提供了基于模板的容器类,这些容器类可以用于存储指定类型的数据项,Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。它们还是线程安全的,它们作为只读容器时可被多个线程访问。 容器类是基于模板的类,如常用的容器类QList,T是一个具体的类型,可

    2024年02月22日
    浏览(50)
  • 【嵌入式Qt开发入门】Qt如何网络编程——获取本机的网络信息

            Qt 网络模块为我们提供了编写TCP/IP客户端和服务器的类。它提供了较低级别的类,例如代表低级网络概念的 QTcpSocket,QTcpServer 和 QUdpSocket,以及诸如 QNetworkRequest, QNetworkReply 和 QNetworkAccessManager 之类的高级类来执行使用通用协议的网络操作。它 还提供了诸如QNet

    2024年02月16日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包