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

    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

  • 相关阅读:
    Python前戏
    Python概述
    博科Brocade 300光纤交换机配置zone教程
    pygame---制作一只会转弯的小乌龟
    UNIX故障--sun m4000服务器故障硬盘更换案例
    redhat系统升级openssh到7.5
    SAN---第二网的概念
    博科交换机常用操作命令
    博科brocade光纤交换机alias-zone的划分-->实操案例
    python常用内置函数
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2439999.html
Copyright © 2011-2022 走看看