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