1、new project,选择applications,qt widgets application,choose。
2、命名,存储路径,next。
3、next。
4、类名,头文件,源文件,选择基类为对话框,generate form不选,next,finish。
5、程序代码如下:
standarddialogs.h文件
#include<QDialog>
#include<QGridLayout>
#include<QPushButton>
#include<QLineEdit>
#include<QFrame>
class StandardDialogs:public QDialog
{
Q_OBJECT
public:
StandardDialogs(QWidget *paremt=0,Qt::WindowFlags f=0);
//~StandardDialogs();
public:
QGridLayout *layout;
QPushButton *filePushButton;
QPushButton *colorPushButton;
QPushButton *fontPushButton;
QLineEdit *fileLineEdit;
QLineEdit *fontLineEdit;
QFrame *colorFrame;
private slots:
void slotOpenFileDlg();
void slotOpenColorDlg();
void slotOpenFontDlg();
};
standarddialogs.cpp文件
#include "standarddialogs.h"
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
StandardDialogs::StandardDialogs( QWidget *parent,Qt::WindowFlags f )
:QDialog( parent,f )
{
setWindowTitle(tr("标准对话框"));
layout = new QGridLayout(this);
filePushButton = new QPushButton;
filePushButton->setText(tr("文件对话框"));
colorPushButton = new QPushButton;
colorPushButton->setText(tr("颜色对话框"));
fontPushButton = new QPushButton;
fontPushButton->setText(tr("字体对话框"));
fileLineEdit = new QLineEdit;
fontLineEdit = new QLineEdit;
fontLineEdit->setText(tr("hello world"));
colorFrame = new QFrame;
colorFrame->setFrameShape(QFrame::Box);
colorFrame->setAutoFillBackground(true);
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.toLatin1() );
}
void StandardDialogs::slotOpenColorDlg()
{
QColor color = QColorDialog::getColor(Qt::red);
if(color.isValid())
{
colorFrame->setPalette(QPalette(color));
}
}
void StandardDialogs::slotOpenFontDlg()
{
bool ok;
QFont font = QFontDialog::getFont(&ok);
if(ok)
{
fontLineEdit->setFont(font);
}
}
main.cpp文件
#include "standarddialogs.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
StandardDialogs w;
w.show();
return a.exec();
}
6、编译运行:点击锤子,点击绿色三角。
7、运行结果: