二十、消息对话框

二十、消息对话框QMessageBox

完成以下功能

 

 

 

创建一个QDialog工程

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

#include<QPushButton>
#include<QGridLayout>
#include<QLabel>
#include<QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

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

private:
    Ui::Dialog *ui;

    QLabel *label;
    QGridLayout *gl;

    QPushButton *questionButton;
    QPushButton *informationButton;
    QPushButton *warningButton;
    QPushButton *criticalButton;
    QPushButton *aboutButton;
    QPushButton *aboutqtButton;

private slots:
    void questionFunc();
    void informationFunc();
    void warningFunc();
    void criticalFunc();
    void aboutFunc();
    void aboutqtFunc();
};
#endif // DIALOG_H

 dialog.cpp

实现简单的对象和布局

    gl=new QGridLayout(this);
    label=new QLabel("请选择任意对话框");

    questionButton=new QPushButton("问题对话框");
    informationButton=new QPushButton("信息对话框");
    warningButton=new QPushButton("警告对话框");
    criticalButton=new QPushButton("错误对话框");
    aboutButton=new QPushButton("关于对话框");
    aboutqtButton=new QPushButton("关于qt对话框");

    gl->addWidget(questionButton,0,0);
    gl->addWidget(informationButton,0,1);
    gl->addWidget(warningButton,1,0);
    gl->addWidget(criticalButton,1,1);
    gl->addWidget(aboutButton,2,0);
    gl->addWidget(aboutqtButton,2,1);
    gl->addWidget(label,3,0,1,2);

实现所有槽函数

void Dialog::questionFunc()
{
    label->setText("问题对话框");
    switch(QMessageBox::question(this,"问题对话框","是否退出程序,请选择?",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
    {
    case QMessageBox::Ok:
        label->setText("Ok!");
        break;
    case QMessageBox::Cancel:
        label->setText("Cancel!");
        break;
    default:
        break;
    }
}

void Dialog::informationFunc()
{
    label->setText("信息对话框");
    QMessageBox::information(this,"信息对话框","信息对话框测试成功");
}

void Dialog::warningFunc()
{
    label->setText("警告对话框");
    switch(QMessageBox::warning(this,"警告对话框","是否删除数据库?",QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save))
    {
    case QMessageBox::Save:
        label->setText("保存");
        break;
    case QMessageBox::Discard:
        label->setText("避免");
        break;
    case QMessageBox::Cancel:
        label->setText("取消");
        break;
    default:
        break;
    }
}

void Dialog::criticalFunc()
{
    label->setText("错误对话框");
    QMessageBox::critical(this,"错误对话框","错误");
}

void Dialog::aboutFunc()
{
    label->setText("关于对话框");
    QMessageBox::about(this,"关于对话框","关于");
}

void Dialog::aboutqtFunc()
{
    label->setText("关于QT对话框");
    QMessageBox::aboutQt(this,"关于Qt对话框");
}

void QMessageBox:: about ( QWidget parent , const QString title , const QString text ):

显示一个简单的关于 框,标题 标题 和文本文本。关于框的父框是父框 

about() 在四个位置寻找合适的图标:

  1. 如果存在,它更喜欢 parent->icon()。
  2. 如果没有,它会尝试包含父 级 .
  3. 如果失败,它将尝试活动窗口。
  4. 作为最后的手段,它使用“信息”图标。

“关于”框有一个标有“确定”的按钮。在 macOS 上,关于框会弹出为无模式窗口;在其他平台上,它目前是应用程序模式。

void QMessageBox:: aboutQt ( QWidget parent , const QString title = QString()):

显示一个关于Qt的简单消息框,带有给定的标题,并以父项 为中心(如果parent 不是 )。该消息包括应用程序正在使用的Qt的版本号。 nullptr

这对于包含在应用程序的“帮助”菜单中很有用,如菜单 范例所示。

QApplication 以插槽的形式提供此功能。

在 macOS 上,关于框会弹出为无模式窗口;在其他平台上,它目前是应用程序模式。

QMessageBox::StandardButton QMessageBox:: critical ( QWidget parent , const QString title , const QString text QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton):

打开一个关键消息框,在指定的父级 前面有给定的标题文本 小部件。

标准 buttons 被添加到消息框。 defaultButton 指定按下 Enter 时使用的按钮。 defaultButton 必须指 buttons 中给出的按钮。defaultButton 是 QMessageBox::NoButton ,QMessageBox 会自动选择合适的默认值。

返回单击的标准按钮的标识。如果按下 Esc,则 Esc 按钮 被返回。

消息框是 应用程序模态 对话框。

警告: 不要在对话框执行期间删除父项。如果你想这样做,你应该使用QMessageBox 构造函数之一自己创建对话框。

QMessageBox::StandardButton QMessageBox:: information ( QWidget parent , const QString title , const QString text QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) :

打开信息消息框采用给定 在指定的父级 前面有给定的标题文本 小部件。

标准 buttons 被添加到消息框。 defaultButton 指定按下 Enter 时使用的按钮。 defaultButton 必须指 buttons 中给出的按钮。defaultButton 是 QMessageBox::NoButton ,QMessageBox 会自动选择合适的默认值。

返回单击的标准按钮的标识。如果按下 Esc,则 Esc 按钮 被返回。

消息框是 应用程序模态 对话框。

警告: 不要在对话框执行期间删除父项。如果你想这样做,你应该使用QMessageBox 构造函数之一自己创建对话框。

QMessageBox::StandardButton QMessageBox:: question ( QWidget parent , const QString title , const QString text QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton) :

打开问题消息框采用给定在指定的父级 前面有给定的标题文本 小部件。

标准 buttons 被添加到消息框。 defaultButton 指定按下 Enter 时使用的按钮。 defaultButton 必须指 buttons 中给出的按钮。defaultButton 是 QMessageBox::NoButton ,QMessageBox 会自动选择合适的默认值。

返回单击的标准按钮的标识。如果按下 Esc,则 Esc 按钮 被返回。

消息框是 应用程序模态 对话框。

警告: 不要在对话框执行期间删除父项。如果你想这样做,你应该使用QMessageBox 构造函数之一自己创建对话框。

QMessageBox::StandardButton QMessageBox:: warning ( QWidget parent , const QString title , const QString text QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) :

在指定的父级 小部件前面打开一个警告消息框,其中包含给定的标题文本

标准 buttons 被添加到消息框。 defaultButton 指定按下 Enter 时使用的按钮。 defaultButton 必须指 buttons 中给出的按钮。 defaultButton 是 QMessageBox::NoButton ,QMessageBox 会自动选择合适的默认值。

返回单击的标准按钮的标识。如果按下 Esc,则 Esc 按钮 被返回。

消息框是 应用程序模态 对话框。

警告: 不要在对话框执行期间删除父项。如果你想这样做,你应该使用QMessageBox 构造函数之一自己创建对话框。

完整代码

#include "dialog.h"
#include "ui_dialog.h"

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

    resize(320,150);

    gl=new QGridLayout(this);
    label=new QLabel("请选择任意对话框");

    questionButton=new QPushButton("问题对话框");
    informationButton=new QPushButton("信息对话框");
    warningButton=new QPushButton("警告对话框");
    criticalButton=new QPushButton("错误对话框");
    aboutButton=new QPushButton("关于对话框");
    aboutqtButton=new QPushButton("关于qt对话框");

    gl->addWidget(questionButton,0,0);
    gl->addWidget(informationButton,0,1);
    gl->addWidget(warningButton,1,0);
    gl->addWidget(criticalButton,1,1);
    gl->addWidget(aboutButton,2,0);
    gl->addWidget(aboutqtButton,2,1);
    gl->addWidget(label,3,0,1,2);

    connect(questionButton,&QPushButton::clicked,this,&Dialog::questionFunc);
    connect(informationButton,&QPushButton::clicked,this,&Dialog::informationFunc);
    connect(warningButton,&QPushButton::clicked,this,&Dialog::warningFunc);
    connect(criticalButton,&QPushButton::clicked,this,&Dialog::criticalFunc);
    connect(aboutButton,&QPushButton::clicked,this,&Dialog::aboutFunc);
    connect(aboutqtButton,&QPushButton::clicked,this,&Dialog::aboutqtFunc);
}

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

void Dialog::questionFunc()
{
    label->setText("问题对话框");
    switch(QMessageBox::question(this,"问题对话框","是否退出程序,请选择?",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
    {
    case QMessageBox::Ok:
        label->setText("Ok!");
        break;
    case QMessageBox::Cancel:
        label->setText("Cancel!");
        break;
    default:
        break;
    }
}

void Dialog::informationFunc()
{
    label->setText("信息对话框");
    QMessageBox::information(this,"信息对话框","信息对话框测试成功");
}

void Dialog::warningFunc()
{
    label->setText("警告对话框");
    switch(QMessageBox::warning(this,"警告对话框","是否删除数据库?",QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save))
    {
    case QMessageBox::Save:
        label->setText("保存");
        break;
    case QMessageBox::Discard:
        label->setText("避免");
        break;
    case QMessageBox::Cancel:
        label->setText("取消");
        break;
    default:
        break;
    }
}

void Dialog::criticalFunc()
{
    label->setText("错误对话框");
    QMessageBox::critical(this,"错误对话框","错误");
}

void Dialog::aboutFunc()
{
    label->setText("关于对话框");
    QMessageBox::about(this,"关于对话框","关于");
}

void Dialog::aboutqtFunc()
{
    label->setText("关于QT对话框");
    QMessageBox::aboutQt(this,"关于Qt对话框");
}

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mo Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值