#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();
}
运行结果: