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

目录
相关文章
|
SQL 关系型数据库 MySQL
因为一条SQL慢查询的思考
本文探讨了MySQL中的慢查询问题,包括定义(执行时间过长的SQL语句)、如何查看慢查询(通过`long_query_time`配置)以及其对系统性能的影响。慢查询可能由缺乏索引、大数据量、网络延迟等因素引起。解决和避免慢查询的方法包括优化配置、添加索引、调整查询语句、批量处理数据、分库分表等。文章还强调了索引在提升查询性能中的作用,解释了B+树索引的工作原理,并列举了可能导致索引失效的场景。
795 0
SQL 个版本下载地址
备用:   SQL Server 2016简体中文企业版 文件名:cn_sql_server_2016_enterprise_x64_dvd_8699450.iso 64位下载地址:ed2k://|file|cn_sql_server_2016_enterprise_x64_dvd_8699450.
2407 0
|
11月前
|
数据采集 人工智能 安全
数据治理的实践与挑战:大型案例解析
在当今数字化时代,数据已成为企业运营和决策的核心资源。然而,随着数据量的爆炸性增长和数据来源的多样化,数据治理成为了企业面临的重要挑战之一。本文将通过几个大型案例,探讨数据治理的实践、成效以及面临的挑战。
1499 4
数据治理的实践与挑战:大型案例解析
|
XML 前端开发 小程序
用Prompt技巧激发无限创意
本文深入探讨当前最前沿的prompt engineering方案,结合OpenAI、Anthropic和Google等大模型公司的资料,以及开源社区中宝贵的prompt技巧分享,全面解析这一领域的实践策略。
517 13
|
存储 缓存
02 ROS创建工作空间和功能包
如何在ROS中创建工作空间和功能包,包括初始化工作空间、编译、设置环境变量以及使用`catkin_create_pkg`创建新功能包的步骤。
454 1
【qt】视口和窗口坐标
【qt】视口和窗口坐标
239 0
|
SQL 关系型数据库 数据库
PostgreSQL 常用函数分享
PostgreSQL 常用函数分享
252 0
|
机器人
用八爪鱼RPA实现员工薪资管理,轻松拆分发放工资单!
RPA(机器人流程自动化)技术可以极大地压缩、优化现有的员工薪资管理流程。通过使用rpa机器人,可以自动化个税计算和申报,自动化工资单处理和发放等重复性、繁琐的任务。这样可以节省大量人力和时间,提高工作效率,减少错误和延误,提升员工满意度。同时,rpa还可以保证数据的准确性,提高工资管理的合规性,增强企业的信誉。
|
安全 数据安全/隐私保护 iOS开发
什么是受 DRM 保护的内容?
当谈到数字媒体世界中的内容时,您当然需要借助 DRM(数字版权管理)技术来保护您的创作或内容。让我们简要了解什么DRM以及什么是受 DRM 保护的内容。
什么是受 DRM 保护的内容?
|
关系型数据库 PostgreSQL