操作系统: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); } }