QMessageBox 消息框

QMessageBox是Qt用于弹出消息对话框的类,提供信息、警告、错误和询问等不同类型的消息提示。通过静态方法调用,可以自定义标题、内容、按钮和图标等,以满足不同交互需求。

QMessageBox

QMessageBox是Qt框架提供的用于弹出消息对话框的类。它可以用于显示一些提示信息,警告信息,错误信息等。

QMessageBox的使用非常简单,只需要调用静态方法即可弹出对话框:

QMessageBox::information(this, "标题", "消息内容");

上面的代码就可以弹出一个信息对话框,标题为"标题",内容为"消息内容"。

除了information之外,还有其他几种类型的对话框:warning、critical、question。它们分别表示警告、严重错误和询问。

QMessageBox还提供了一些按钮供用户选择,比如OK、Cancel等。可以通过设置标记来控制哪些按钮是可见的。默认情况下,QMessageBox会自动根据对话框类型选择合适的按钮QMessageBox还支持设置图标、复选框等特性,以满足更多的需求。

举例:

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

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


class Dialog : public QDialog
{
    Q_OBJECT

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

    QLabel *qlabeltext;
    QPushButton *Questiong_button,*Information_button,*Warning_button,*Critical_button,*About_button,*AboutQt_button;

private slots:
    void Questiong_buttonfunc();
    void Information_buttonfunc();
    void Warning_buttonfunc();
    void Critical_buttonfunc();
    void About_buttonfunc();
    void AboutQt_buttonfunc();
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    resize(300,120);
    qlabeltext=new QLabel("测试");
    Questiong_button=new QPushButton("QuestiongMsg");  //问题消息框命令按钮
    Information_button=new QPushButton("InformationMsg");  //信息消息框命令按钮
    Warning_button=new QPushButton("WarningMsg");  //警告消息框命令按钮
    Critical_button=new QPushButton("CriticalMsg");  //错误消息框命令按钮
    About_button=new QPushButton("AboutMsg");  //关于消息框命令按钮
    AboutQt_button=new QPushButton("AboutQtMsg");  //关于qt

    QGridLayout *qglayout=new QGridLayout(this);
    qglayout->addWidget(qlabeltext,0,0);
    qglayout->addWidget(Questiong_button,1,0);
    qglayout->addWidget(Information_button,1,1);
    qglayout->addWidget(Warning_button,2,0);
    qglayout->addWidget(Critical_button,2,1);
    qglayout->addWidget(About_button,3,0);
    qglayout->addWidget(AboutQt_button,3,1);

    //连接槽函数
    connect(Questiong_button,SIGNAL(clicked()),this,SLOT(Questiong_buttonfunc()));
    connect(Information_button,SIGNAL(clicked()),this,SLOT(Information_buttonfunc()));
    connect(Warning_button,SIGNAL(clicked()),this,SLOT(Warning_buttonfunc()));
    connect(Critical_button,SIGNAL(clicked()),this,SLOT(Critical_buttonfunc()));
    connect(About_button,SIGNAL(clicked()),this,SLOT(About_buttonfunc()));
    connect(AboutQt_button,SIGNAL(clicked()),this,SLOT(AboutQt_buttonfunc()));

}

Dialog::~Dialog()
{
}

void Dialog::Questiong_buttonfunc()
{
    qlabeltext->setText("Questiong");
    //问号图标对话框  按钮OK和Canel  默认选中Cancel
    switch (QMessageBox::question(this,"问题消息对话框","你是否想退出应用程序,请选择",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Cancel))
    {
    case QMessageBox::Ok:
        qlabeltext->setText("Questiong选择Ok");
        break;
    case QMessageBox::Cancel:
        qlabeltext->setText("Questiong选择Cancel");
        break;
    default:
        break;
    }
}
void Dialog::Information_buttonfunc()
{
    qlabeltext->setText("Information");
    //图标为i
    QMessageBox::information(this,"信息消息对话框","Information_测试");

}
void Dialog::Warning_buttonfunc()
{
    qlabeltext->setText("Warning");
    //图标为叹号  按钮OK和Canel  默认选中Cancel
    switch (QMessageBox::warning(this,"警告消息对话框","是否删除数据库kka.mdb,请注意数据安全操作"
                                  ,QMessageBox::Discard|QMessageBox::Cancel|QMessageBox::Save))
    {
    case QMessageBox::Discard:
        qlabeltext->setText("warning选择Discard");
        break;
    case QMessageBox::Cancel:
        qlabeltext->setText("warning选择Cancel");
        break;
    case QMessageBox::Save:
        qlabeltext->setText("warning选择Save");
        break;
    default:
        break;
    }
}
void Dialog::Critical_buttonfunc()
{
    qlabeltext->setText("critical");
    //图标为红×号
    QMessageBox::critical(this,"错误消息对话框","数据库文件备份错误请重新检测!");
}
void Dialog::About_buttonfunc()
{
    qlabeltext->setText("about");
    //图标
    QMessageBox::about(this,"关于消息对话框","测试about");
}
void Dialog::AboutQt_buttonfunc()
{
    qlabeltext->setText("aboutQt");
    //图标
    QMessageBox::aboutQt(this,"关于消息对话框");
}

效果:

 

 

 

 

 

自定义消息框

举例:

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

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

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
    QPushButton *qpb;
    QLabel *qlb1,*qlb2;
private slots:
    void customMessageBoxfunc();
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    qpb=new QPushButton("自定义消息框测试");
    qlb1=new QLabel("自定义消息框:");
    qlb2=new QLabel();

    QGridLayout *qglayout=new QGridLayout(this);
    qglayout->addWidget(qlb1,0,0);
    qglayout->addWidget(qpb,0,1);
    qglayout->addWidget(qlb2,1,0,1,2);

    //连接槽函数
    connect(qpb,SIGNAL(clicked()),this,SLOT(customMessageBoxfunc()));
}

Dialog::~Dialog()
{
}

void Dialog::customMessageBoxfunc()
{
    QMessageBox qmgbox;
    qmgbox.setWindowTitle("只因你太美简介");
    //添加按钮
    QPushButton *sing=qmgbox.addButton("唱",QMessageBox::ActionRole);
    QPushButton *jump=qmgbox.addButton("跳",QMessageBox::AcceptRole);
    QPushButton *rap=qmgbox.addButton("rap",QMessageBox::AcceptRole);

    //添加图标
    //用于设置窗口、按钮等控件的图标。它需要一个QPixmap类型的参数,表示要设置的图标。使用此函数可使控件显示指定的图标。
    qmgbox.setIconPixmap(QPixmap("d:\\222.png"));

    qmgbox.exec(); //执行这个自定以消息框
}

效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值