功能:QT 实现3个标准对话框,文本对话框、颜色对话框、字体设置对话框。
图示:
图1 基本对话框
图2 文本对话框
图3 颜色对话框
图4 字体设置对话框
分析:
标准对话框头文件代码:
#ifndef STANDARDDIALOGS_H
#define STANDARDDIALOGS_H
#include <QtGui>
class StandardDialogs : public QDialog
{
Q_OBJECT
public:
StandardDialogs( QWidget *parent=0, Qt::WindowFlags f=0 );
public:
QGridLayout *layout;
QPushButton *filePushButton;
QPushButton *colorPushButton;
QPushButton *fontPushButton;
QLineEdit *fileLineEdit;
QLineEdit *fontLineEdit;
QFrame *colorFrame;
private slots:
void slotOpenFileDlg();
void slotOpenColorDlg();
void slotOpenFontDlg();
};
#endif
标准对话框CPP文件代码:
#include "standarddialogs.h"
StandardDialogs::StandardDialogs( QWidget *parent, Qt::WindowFlags f )//构造函数
: QDialog( parent, f )
{
setWindowTitle(tr("Standard Dialogs"));
layout = new QGridLayout( this );
filePushButton = new QPushButton();
filePushButton->setText(tr("File Dialog"));
colorPushButton = new QPushButton();
colorPushButton->setText(tr("Color Dialog"));
fontPushButton = new QPushButton( );
fontPushButton->setText(tr("Font Dialog"));
fileLineEdit = new QLineEdit();
colorFrame = new QFrame();
colorFrame->setFrameShape( QFrame::Box );
colorFrame->setAutoFillBackground(true);
fontLineEdit = new QLineEdit( );
fontLineEdit->setText(tr("Hello World"));
layout->addWidget( filePushButton, 0, 0 );
layout->addWidget( fileLineEdit, 0, 1 );
layout->addWidget( colorPushButton, 1, 0 );
layout->addWidget( colorFrame, 1, 1 );
layout->addWidget( fontPushButton, 2, 0 );
layout->addWidget( fontLineEdit, 2, 1 );
layout->setMargin(15);
layout->setSpacing(10);
connect(filePushButton,SIGNAL(clicked()),this,SLOT(slotOpenFileDlg()));
connect(colorPushButton,SIGNAL(clicked()),this,SLOT(slotOpenColorDlg()));
connect(fontPushButton,SIGNAL(clicked()),this,SLOT(slotOpenFontDlg()));
}
void StandardDialogs::slotOpenFileDlg()
{
QString s = QFileDialog::getOpenFileName(
this, "open file dialog",
"/",
"C++ files (*.cpp);;C files (*.c);;Head files (*.h)");
fileLineEdit->setText( s.toAscii() );
}
void StandardDialogs::slotOpenColorDlg()
{
QColor color = QColorDialog::getColor (Qt::blue);
if(color.isValid())
{
colorFrame->setPalette(QPalette(color));
}
}
void StandardDialogs::slotOpenFontDlg()
{
bool ok;
QFont font = QFontDialog::getFont( &ok );
if( ok )
{
fontLineEdit->setFont( font );
}
}
重点:槽函数1:QFileDialog::getOpenFileName()

槽函数2:QColorDialog::getColor ( )
QColorDialog::getColor ( const QColor & initial = white, QWidget * parent = 0, const char * name = 0 ) [静态] ;
QColorDialog::getColor()调用了QColorDialog的static函数getColor()。这个函数有两个参数,第一个是QColor类型,是对话框打开时默认选择的颜色,第二个是它的parent。
槽函数3:QFontDialog::getFont ( )
QFontDialog::getFont ( bool * ok, const QFont & initial, QWidget * parent = 0, const char * name = 0 ) [静态] ;
主函数CPP文件代码:
#include "standarddialogs.h"
#include <QApplication>
int main( int argc, char **argv )
{
QFont font("ZYSong18030",12);
QApplication::setFont(font);
QApplication a( argc, argv );
QTranslator translator(0);
translator.load("standarddialogs_zh",".");
a.installTranslator(&translator);
StandardDialogs *standarddialogs = new StandardDialogs();
standarddialogs->show();
return a.exec();
}