Qt4学习笔记(八),QMessageBox对话框





#ifndef CBUILTINDLG_H
#define CBUILTINDLG_H

#include <QDialog>

class QTextEdit;
class QPushButton;

class CBuiltinDlg : public QDialog
{
	Q_OBJECT

public:
	CBuiltinDlg(QWidget *parent=0);
	virtual ~CBuiltinDlg(){};
	void showColorDlg();
	void showErrorDlg();
	void showFileDlg();
	void showFontDlg();
	void showInputDlg();
	void showPageDlg();
	void showProgressDlg();
	void showPrintDlg();

private slots:
	void onBtn();

private:
	QTextEdit *m_pDisplayTextEdit;
	QPushButton *m_pColorBtn;
	QPushButton *m_pErrorBtn;
	QPushButton *m_pFileBtn;
	QPushButton *m_pFontBtn;
	QPushButton *m_pInputBtn;
	QPushButton *m_pPageBtn;
	QPushButton *m_pProgressBtn;
	QPushButton *m_pPrintBtn;
};

#endif // CBUILTINDLG_H
#include <QTextEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QPalette>
#include <QColor>
#include <QColorDialog>
#include <QErrorMessage>
#include <QFileDialog>
#include <QFontDialog>
#include <QFont>
#include <QInputDialog>
#include <QPrinter>
#include <QPageSetupDialog>
#include <QProgressDialog>
#include <QDebug>
#include <QApplication>
#include <QPrintDialog>
#include "CBuiltinDlg.h"
#include "GBK.h"

CBuiltinDlg::CBuiltinDlg(QWidget *parent)
	: QDialog(parent)
{
	m_pDisplayTextEdit = new QTextEdit(GBK::ToUnicode("Qt标准通用对话框"));
	QGridLayout *pGridLayout = new QGridLayout;
	m_pColorBtn = new QPushButton(GBK::ToUnicode("颜色对话框"));
	m_pErrorBtn = new QPushButton(GBK::ToUnicode("错误对话框"));
	m_pFileBtn = new QPushButton(GBK::ToUnicode("文件对话框"));
	m_pFontBtn = new QPushButton(GBK::ToUnicode("字体对话框"));
	m_pInputBtn = new QPushButton(GBK::ToUnicode("输入对话框"));
	m_pPageBtn = new QPushButton(GBK::ToUnicode("页设置对话框"));
	m_pProgressBtn = new QPushButton(GBK::ToUnicode("进度对话框"));
	m_pPrintBtn = new QPushButton(GBK::ToUnicode("打印对话框"));
	                                  //行,列,行宽,列宽
	pGridLayout->addWidget(m_pColorBtn, 0, 0, 1, 1);
	pGridLayout->addWidget(m_pErrorBtn, 0, 1, 1, 1);
	pGridLayout->addWidget(m_pFileBtn, 1, 0, 1, 1);
	pGridLayout->addWidget(m_pFontBtn, 1, 1, 1, 1);
	pGridLayout->addWidget(m_pInputBtn, 2, 0, 1, 1);
	pGridLayout->addWidget(m_pPageBtn, 2, 1, 1, 1);
	pGridLayout->addWidget(m_pProgressBtn, 3, 0, 1, 1);
	pGridLayout->addWidget(m_pPrintBtn, 3, 1, 1, 1);
	pGridLayout->addWidget(m_pDisplayTextEdit, 4, 0, 3, 3);

	connect(m_pColorBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pErrorBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pFileBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pFontBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pInputBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pPageBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pProgressBtn, SIGNAL(clicked()), this, SLOT(onBtn()));
	connect(m_pPrintBtn, SIGNAL(clicked()), this, SLOT(onBtn()));

	setLayout(pGridLayout);
	setWindowTitle(GBK::ToUnicode("Qt内建对话框测试"));
}

void CBuiltinDlg::onBtn()
{
	QPushButton *pBtn = qobject_cast<QPushButton*>(sender());
	//颜色对话框
	if (pBtn == m_pColorBtn)
	{
		showColorDlg();
	}

	//错误对话框
	if (pBtn == m_pErrorBtn)
	{
		showErrorDlg();
	}

	//文件对话框
	if (pBtn == m_pFileBtn)
	{
		showFileDlg();
	}

	//字体对话框
	if (pBtn == m_pFontBtn)
	{
		showFontDlg();
	}

	//输入对话框
	if (pBtn == m_pInputBtn)
	{
		showInputDlg();
	}

	//页设置对话框
	if (pBtn == m_pPageBtn)
	{
		showPageDlg();
	}

	//进度对话框
	if (pBtn == m_pProgressBtn)
	{
		showProgressDlg();
	}

	//打印对话框
	if (pBtn == m_pPrintBtn)
	{
		showPrintDlg();
	}
}

//颜色对话框, 设置m_pDisplayTextEdit窗口颜色
void CBuiltinDlg::showColorDlg()
{
	QPalette palette = m_pDisplayTextEdit->palette();
	const QColor &color = QColorDialog::getColor(palette.color(QPalette::Base), this);
	if (color.isValid())
	{
		palette.setColor(QPalette::Base, color);
		m_pDisplayTextEdit->setPalette(palette);
	}
}

//显示错误对话框
void CBuiltinDlg::showErrorDlg()
{
	QErrorMessage box(this);
	box.setWindowTitle(GBK::ToUnicode("错误消息框"));
	box.showMessage(GBK::ToUnicode("错误消息框实例1"));
	box.showMessage(GBK::ToUnicode("错误消息框实例2"));
	box.showMessage(GBK::ToUnicode("错误消息框实例3"));
    box.showMessage(GBK::ToUnicode("错误消息框实例4"));
	box.showMessage(GBK::ToUnicode("错误消息框实例5"));
	box.exec();
} 

void CBuiltinDlg::showFileDlg()
{
	QString filename = QFileDialog::getOpenFileName(this, "open file");
	m_pDisplayTextEdit->setText(filename);
}

void CBuiltinDlg::showFontDlg()
{
	bool ok;
	const QFont &font = QFontDialog::getFont(&ok, m_pDisplayTextEdit->font(), this, "font dialog");
	if (ok)
	{
		m_pDisplayTextEdit->setFont(font);
	}
}

void CBuiltinDlg::showInputDlg()
{
	bool ok;
	QString text = QInputDialog::getText(this,"input dialog","input text",
		                                 QLineEdit::Normal,QDir::home().dirName(),&ok);
	if (ok && !text.isEmpty())
	{
		m_pDisplayTextEdit->setText(text);
	}
}

void CBuiltinDlg::showPageDlg()
{
	QPrinter printer;
	QPageSetupDialog dlg(&printer, this);
	dlg.setWindowTitle("page setup dialog");
	if (dlg.exec() == QDialog::Accepted)
	{
		//下一步处理
	}
}

void CBuiltinDlg::showProgressDlg()
{
	QProgressDialog progress("copy file...","cancel",0,10000,this);
	progress.setWindowModality(Qt::WindowModal);
	progress.setWindowTitle("progress dialog");
	progress.show();
	for (int i=0; i<10000; ++i)
	{
		progress.setValue(i);
		qApp->processEvents();
		if (progress.wasCanceled())
		{
			break;
		}
		qDebug()<<i;
	}
	progress.setValue(10000);
}

void CBuiltinDlg::showPrintDlg()
{
	QPrinter printer;
	QPrintDialog printdlg(&printer, this);
	printdlg.setWindowTitle("print dialog");
	if (printdlg.exec() == QDialog::Accepted)
	{
		//下一步处理
	}
}

#include "CBuiltinDlg.h"

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);

	CBuiltinDlg dlg;
	dlg.show();

	return a.exec();
}

运行结果:















猜你喜欢

转载自blog.csdn.net/u012592062/article/details/80383847