1、不同的消息使用不同的消息框,常用的消息框一般是7中,主要是Question、Information、Waring、Critical、About、About Qt以及自定义消息框。
2、Question、Information、Waring、Critica这几个消息框的使用方法差不多。
这些都还是比较简单的,还是看代码比较清晰:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QMessageBox>
#include <QGridLayout>
#include <QPushButton>
#include <QMessageBox>
#include <QLabel>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
QGridLayout* layout;
QPushButton* question;
QPushButton* information;
QPushButton* waring;
QPushButton* critical;
QPushButton* about;
QPushButton* qboutqt;
QPushButton* custem;
QLabel* lable;
QLabel* lable1;
QLabel* lable2;
QLabel* lable3;
private slots:
void slotQuestion();
void slotInformation();
void slotWaring();
void slotCritical();
void slotAbout();
void slotAboutQt();
void slotCustem();
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
//设置主窗口的标题
setWindowTitle(tr("message"));
//相关按钮的创建
question = new QPushButton;
question->setText(tr("question"));
information = new QPushButton;
information->setText(tr("information"));
waring = new QPushButton;
waring->setText(tr("waring"));
critical = new QPushButton;
critical->setText(tr("critical"));
about = new QPushButton;
about->setText(tr("about"));
custem = new QPushButton;
custem->setText(tr("custem"));
//这些lable是用来显示相关的提示信息
lable = new QLabel;
lable1 = new QLabel;
lable2 = new QLabel;
lable3 = new QLabel;
//向主窗体添加控件
layout = new QGridLayout(this);
layout->addWidget(question,0,0);
layout->addWidget(information,0,1);
layout->addWidget(waring,1,0);
layout->addWidget(critical,1,1);
layout->addWidget(about,2,0);
layout->addWidget(custem,2,1);
//信号与槽
connect(question,SIGNAL(clicked()),this,SLOT(slotQuestion()));
connect(information,SIGNAL(clicked()),this,SLOT(slotInformation()));
connect(waring,SIGNAL(clicked()),this,SLOT(slotWaring()));
connect(critical,SIGNAL(clicked()),this,SLOT(slotCritical()));
connect(about,SIGNAL(clicked()),this,SLOT(slotAbout()));
connect(custem,SIGNAL(clicked()),this,SLOT(slotCustem()));
}
//Question消息框的使用
void Dialog::slotQuestion()
{
switch (QMessageBox::question(this,"Question",tr("it,s end of documents,search from begin ?"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
{
case QMessageBox::Ok:
lable->setText("question button / ok");
break;
case QMessageBox::Cancel:
lable->setText("question button / cancle");
break;
default:
break;
}
}
Information消息框的使用
void Dialog::slotInformation()
{
QMessageBox::information(this,"information",tr("anything you wnat tell user"));
return;
}
//Waring消息框的使用
void Dialog::slotWaring()
{
switch (QMessageBox::warning(this,"waring",tr("save changes to documents?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel)) {
case QMessageBox::Save:
lable->setText(tr("waring button / save"));
break;
case QMessageBox::Discard:
lable->setText(tr("waring button / discard"));
break;
case QMessageBox::Cancel:
lable->setText(tr("waring button / cancle"));
break;
default:
break;
}
}
//Critical消息框的使用
void Dialog::slotCritical()
{
QMessageBox::critical(this,"information",tr("tell user a critical error"));
lable->setText(tr("critical message"));
return ;
}
//About消息框的使用
void Dialog::slotAbout()
{
QMessageBox::about(this,"about",tr("this is about nan yang university message"));
lable->setText(tr("about message"));
return ;
}
//AboutQt消息框的使用
void Dialog::slotAboutQt()
{
QMessageBox::critical(this,"Information",tr("tell user a critical error"));
lable->setText("Critical messagebox");
}
//Custem消息框的使用
void Dialog::slotCustem()
{
QMessageBox custemMsgBox;
custemMsgBox.setWindowTitle(tr("custem message box"));
QPushButton* lockButton = custemMsgBox.addButton(tr("解锁"),QMessageBox::ActionRole);
QPushButton* unlockButton = custemMsgBox.addButton(tr("锁定"),QMessageBox::ActionRole);
QPushButton* cancelButton = custemMsgBox.addButton(tr("Cancle"),QMessageBox::ActionRole);
//添加图标
/* custemMsgBox.setIconPixmap(QPixmap("1.png"));
custemMsgBox.setText(tr("This is custem message box"));
custemMsgBox.exec();
*/
if(custemMsgBox.clickedButton() == lockButton)
lable1->setText(tr("Custem MessageBox / Lock"));
if(custemMsgBox.clickedButton() == unlockButton)
lable2->setText(tr("Custem MessageBox / Unlock"));
if(custemMsgBox.clickedButton() == cancelButton)
lable3->setText(tr("Custem Cancle / Cancle"));
}
Dialog::~Dialog()
{
delete ui;
}