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(); //执行这个自定以消息框
}
效果: