zoukankan      html  css  js  c++  java
  • QT中各种MessageBox的使用

    原文来源:http://www.cnblogs.com/rollenholt/archive/2012/04/10/2439999.html

    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();
    }
    

    效果图:

    image

    imageimageimageimageimageimage

    image


  • 相关阅读:
    洛谷p1017 进制转换(2000noip提高组)
    Personal Training of RDC
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Peterhof.
    Asia Hong Kong Regional Contest 2019
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
    XVIII Open Cup named after E.V. Pankratiev. Ukrainian Grand Prix.
    XVIII Open Cup named after E.V. Pankratiev. GP of SPb
    卜题仓库
    2014 ACM-ICPC Vietnam National First Round
  • 原文地址:https://www.cnblogs.com/SunkingYang/p/11049195.html
Copyright © 2011-2022 走看看