操作系统:Fedora Linux 14
创建文件夹StandardDialogs,以下是代码(三个文件)
/** Object: StandardDialogs
** Desc: 标准对话框的使用
** File: main.cpp
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#include <QApplication> // 所有QT图形化应用程序必须包含此文件,它包含了QT图形化应用程序的各种资源、基本设置、控制流及事件处理等。
#include "StandardDialogs.h" // 自定义类头文件,StandardDialogs是包含标准通用文件对话框使用、标准通用颜色对话框使用和标准通用字体对话框使用的类。
int main(int argc, char *argv[]){
QApplication app(argc, argv);
StandardDialogs *stddia = new StandardDialogs();
stddia->show();
return app.exec();
}
================================
/** Object: StandardDialogs
** Desc: 标准对话框的使用
** File: StandardDialogs.h
** Class: StandardDialogs标准对话框使用类 头文件
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#ifndef STANDARDDIALOGS_H
#define STANDARDDIALOGS_H
#include <QtGui> // 包含了QT基本头文件和GUI头文件。GUI:图形用户界面。
class StandardDialogs: public QDialog {
Q_OBJECT // QT对象派生类必须使用的宏。
public:
StandardDialogs(QWidget *parent=0, Qt::WindowFlags f=0); // 构造函数
~StandardDialogs(); // 析构函数
public:
QGridLayout *m_pGLayout; // 表格布局控件
QPushButton *m_pPBFile; // 按钮控件
QPushButton *m_pPBColor;
QPushButton *m_pPBFont;
QLineEdit *m_pLEFile; // 文本框控件
QLineEdit *m_pLEFont;
QFrame *m_pFrameColor;// 基本框架控件
private slots: // 槽处理函数
void SlotOpenFileDlg();
void SlotOpenColorDlg();
void SlotOpenFontDlg();
};
#endif // STANDARDDIALOGS_H
================================
/** Object: StandardDialogs
** Desc: 标准对话框的使用
** File: StandardDialogs.cpp
** Class: StandardDialogs标准对话框使用类 源文件
** Compile:qmake-qt4 -project;qmake-qt4;make;
** Note: 编译说明:
** qmake-qt4 -prject 自动生成程序的项目文件(*.pro);
** qmake-qt4 用于生成程序的Makefile文件;
** make 编译 Makefile 文件得到可执行文件。
** */
#include "StandardDialogs.h"
/* 构造函数 */
StandardDialogs::StandardDialogs(QWidget *parent, Qt::WindowFlags f):QDialog(parent, f){
setWindowTitle(tr("Standard Dialogs"));// 设置对话窗口标题,tr:多语言转换函数。
m_pGLayout = new QGridLayout(this);
m_pPBFile = new QPushButton();
m_pPBFile->setText(tr("File Dialog"));
m_pPBColor = new QPushButton();
m_pPBColor->setText(tr("Color Dialog"));
m_pPBFont = new QPushButton();
m_pPBFont->setText(tr("Font Dialog"));
m_pLEFile = new QLineEdit();
m_pFrameColor = new QFrame();
m_pFrameColor->setFrameShape(QFrame::Box);// 设置外形为盒子外形
m_pFrameColor->setAutoFillBackground(true); // 设置自动填充背景色
m_pLEFont = new QLineEdit();
m_pLEFont->setText(tr("Hello World"));
m_pGLayout->addWidget(m_pPBFile, 0, 0); // 布局表格中加入元素,第一行,第一列
m_pGLayout->addWidget(m_pLEFile, 0, 1);
m_pGLayout->addWidget(m_pPBColor, 1, 0);
m_pGLayout->addWidget(m_pFrameColor, 1, 1);
m_pGLayout->addWidget(m_pPBFont, 2, 0);
m_pGLayout->addWidget(m_pLEFont, 2, 1);
m_pGLayout->setMargin(15); // 设置布局表格四周边空白为15像素。
m_pGLayout->setSpacing(10); // 设置布局表格内部元素间空白为10像素。
/* 绑定按键单击事件处理函数 */
connect(m_pPBFile, SIGNAL(clicked()), this, SLOT(SlotOpenFileDlg()));
connect(m_pPBColor, SIGNAL(clicked()), this, SLOT(SlotOpenColorDlg()));
connect(m_pPBFont, SIGNAL(clicked()), this, SLOT(SlotOpenFontDlg()));
}
/* 析构函数 */
StandardDialogs::~StandardDialogs(){
}
/* */
void StandardDialogs::SlotOpenFileDlg(){
/* 打开文件选择对话框,返回选择文件绝对路径 */
QString s = QFileDialog::getOpenFileName(this, tr("open file dialog"),
"./", tr("C++ files (*.cpp);;C files (*.c);;Head files (*.h)"));
m_pLEFile->setText(s);
}
/* */
void StandardDialogs::SlotOpenColorDlg(){
/* 打开颜色选择对话框,返回颜色对象 */
QColor color = QColorDialog::getColor(Qt::blue);
if (color.isValid()){
m_pFrameColor->setPalette(QPalette(color));
}
}
/* */
void StandardDialogs::SlotOpenFontDlg(){
bool bOk = false;
/* 打开字体选择对话框,返回字体对象 */
QFont font = QFontDialog::getFont(&bOk);
if (bOk){
m_pLEFont->setFont(font);
}
}