MessageBox.h
#ifndef MESSAGEBOX_H #define MESSAGEBOX_H #include <QtGui> #include "ui_messagebox.h" class MessageBox : public QDialog { Q_OBJECT public: MessageBox(QWidget *parent = 0, Qt::WFlags flags = 0); ~MessageBox(); private: Ui::MessageBoxClass ui; QLabel *label; private slots: void slotQuestion(); void slotInformation(); void slotWarning(); void slotCritical(); void slotAbout(); void slotAboutQt(); void slotCustom(); }; #endif // MESSAGEBOX_H
MessageBox.cpp
#include "messagebox.h" MessageBox::MessageBox(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { ui.setupUi(this); setWindowTitle(tr("Message Box Example")); label = new QLabel; QPushButton *btn1 = new QPushButton("Question"); QPushButton *btn2 = new QPushButton("Information"); QPushButton *btn3 = new QPushButton("Warning"); QPushButton *btn4 = new QPushButton("Critical"); QPushButton *btn5 = new QPushButton("About"); QPushButton *btn6 = new QPushButton("About Qt"); QPushButton *btn7 = new QPushButton("Custom"); QGridLayout *grid = new QGridLayout; grid->addWidget(btn1,0,0); grid->addWidget(btn2,0,1); grid->addWidget(btn3,1,0); grid->addWidget(btn4,1,1); grid->addWidget(btn5,2,0); grid->addWidget(btn6,2,1); grid->addWidget(btn7,3,0); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setMargin(10); mainLayout->setSpacing(20); mainLayout->addWidget(label); mainLayout->addLayout(grid); setLayout(mainLayout); connect(btn1,SIGNAL(clicked()),this,SLOT(slotQuestion())); connect(btn2,SIGNAL(clicked()),this,SLOT(slotInformation())); connect(btn3,SIGNAL(clicked()),this,SLOT(slotWarning())); connect(btn4,SIGNAL(clicked()),this,SLOT(slotCritical())); connect(btn5,SIGNAL(clicked()),this,SLOT(slotAbout())); connect(btn6,SIGNAL(clicked()),this,SLOT(slotAboutQt())); connect(btn7,SIGNAL(clicked()),this,SLOT(slotCustom())); } MessageBox::~MessageBox() { } void MessageBox::slotQuestion() { switch(QMessageBox::question(this,"Question",tr("It's end of document,search from begin?"), QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok)) { case QMessageBox::Ok: label->setText(" Question button / Ok "); break; case QMessageBox::Cancel: label->setText(" Question button / Cancel "); break; default: break; } return; } void MessageBox::slotInformation() { QMessageBox::information(this,"Information",tr("anything you want tell user")); return; } void MessageBox::slotWarning() { switch(QMessageBox::warning(this,"Warning",tr("Save changes to document?"), QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)) { case QMessageBox::Save: label->setText(" Warning button / Save "); break; case QMessageBox::Discard: label->setText(" Warning button / Discard "); break; case QMessageBox::Cancel: label->setText(" Warning button / Cancel "); break; default: break; } return; } void MessageBox::slotCritical() { QMessageBox::critical(this,"Critical",tr("tell user a critical error")); label->setText(" Critical MessageBox "); return; } void MessageBox::slotAbout() { QMessageBox::about(this,"About",tr("Message box example!")); label->setText(" About MessageBox "); return; } void MessageBox::slotAboutQt() { QMessageBox::aboutQt(this,"About Qt"); label->setText(" About Qt MessageBox "); return; } void MessageBox::slotCustom() { QMessageBox customMsgBox; customMsgBox.setWindowTitle("Custom message box"); QPushButton *lockButton = customMsgBox.addButton(tr("Lock"),QMessageBox::ActionRole); QPushButton *unlockButton = customMsgBox.addButton(tr("Unlock"),QMessageBox::ActionRole); QPushButton *cancelButton = customMsgBox.addButton(QMessageBox::Cancel); customMsgBox.setIconPixmap(QPixmap(":/images/linuxredhat.png")); customMsgBox.setText(tr("This is a custom message box")); customMsgBox.exec(); if(customMsgBox.clickedButton() == lockButton) label->setText(" Custom MessageBox / Lock "); if(customMsgBox.clickedButton() == unlockButton) label->setText(" Custom MessageBox / Unlock "); if(customMsgBox.clickedButton() == cancelButton) label->setText(" Custom MessageBox / Cancel "); return; }
main.cpp
#include "messagebox.h" #include <QtGui/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MessageBox *w=new MessageBox; w->show(); return a.exec(); }
效果图: