跟青翼一起学Qt4编程系列 之 2-1标准对话框
先把代码放出,明天再慢慢解释吧,现在已经很晚了,明天还上班,一个小Bug折腾了我一晚上,郁闷
后来还是成功了,先截个图:
这个工程主要有三个文件组成:
Main.cpp
StandDialog.h
StandDialog.cpp
![]()
StandDialog.h
1 StandDialog.h
2
3 #ifndef STANDDIALOGS_H
4 #define STANDDIALOGS_H
5 #include <QApplication>
6 #include <QWidget>
7 #include <QPushButton>
8 #include <QLineEdit>
9 #include <QGridLayout>
10 #include <QFileDialog>
11 #include <QColor>
12 #include <QColorDialog>
13 #include <QFont>
14 #include <QFontDialog>
15 #include <QTextCodec>
16
17 class StandDialogs:public QDialog
18 {
19 Q_OBJECT
20 public:
21 StandDialogs(QWidget *parent=0,Qt::WindowFlags f=0);
22 ~StandDialogs();
23 public:
24 QGridLayout *layout;
25 QPushButton *filePushButton;
26 QPushButton *colorPushButton;
27 QPushButton *fontPushButton;
28 QLineEdit *fileLineEdit;
29 QLineEdit *fontLineEdit;
30 QFrame *colorFrame;
31 private slots:
32 void slotOpenFileDlg();
33 void slotOpenColorDlg();
34 void slotOpenFontDlg();
35 };
36
37 #endif // STANDDIALOGS_H
![]()
StandDialog.cpp
#include "StandDialogs.h"
StandDialogs::StandDialogs(QWidget *parent,Qt::WindowFlags f)
:QDialog(parent,f)
{
QTextCodec *codec=QTextCodec::codecForName("utf-8");
//设置窗体标题
parent->setWindowTitle(codec->toUnicode("标准对话框"));
layout=new QGridLayout(parent);
filePushButton=new QPushButton;
filePushButton->setText(codec->toUnicode("文件选择"));
colorPushButton=new QPushButton;
colorPushButton->setText(codec->toUnicode("颜色选择"));
fontPushButton=new QPushButton;
fontPushButton->setText(codec->toUnicode("字体选择"));
//当用户选择不同的颜色时,ColorFrame会根据用户选择的颜色更新其背景
colorFrame=new QFrame;
colorFrame->setFrameShape(QFrame::Box);
colorFrame->setAutoFillBackground(true);
//当用户选择不同的字体时,fontLineEdit会根据用户选择的字体不同更新其内容
fileLineEdit=new QLineEdit;
fontLineEdit=new QLineEdit;
fontLineEdit->setText(codec->toUnicode("青 翼"));
//将控件添加到QGridLayout上
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()));
}
StandDialogs::~StandDialogs()
{
}
void StandDialogs::slotOpenFileDlg()
{
QString s=QFileDialog::getOpenFileName(
this,
"Open File Dialog",
"/",
"C++ files(*.cpp);; C files(*.c);;Head files(*.h)");
fileLineEdit->setText(s.toAscii());
}
void StandDialogs::slotOpenColorDlg()
{
QColor color=QColorDialog::getColor(Qt::green);
if(color.isValid())
{
colorFrame->setPalette(QPalette(color));
}
}
void StandDialogs::slotOpenFontDlg()
{
bool ok;
QFont font=QFontDialog::getFont(&ok);
if(ok)
{
fontLineEdit->setFont(font);
}
}
![]()
Main.cpp
#include <QApplication>
#include "StandDialogs.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget widget;
widget.resize(400,300);
widget.show();
StandDialogs stdDialog(&widget,0);
return app.exec();
}
![]()
![]()
![]()
后来还是成功了,先截个图:
这个工程主要有三个文件组成:
Main.cpp
StandDialog.h
StandDialog.cpp
1 StandDialog.h
2
3 #ifndef STANDDIALOGS_H
4 #define STANDDIALOGS_H
5 #include <QApplication>
6 #include <QWidget>
7 #include <QPushButton>
8 #include <QLineEdit>
9 #include <QGridLayout>
10 #include <QFileDialog>
11 #include <QColor>
12 #include <QColorDialog>
13 #include <QFont>
14 #include <QFontDialog>
15 #include <QTextCodec>
16
17 class StandDialogs:public QDialog
18 {
19 Q_OBJECT
20 public:
21 StandDialogs(QWidget *parent=0,Qt::WindowFlags f=0);
22 ~StandDialogs();
23 public:
24 QGridLayout *layout;
25 QPushButton *filePushButton;
26 QPushButton *colorPushButton;
27 QPushButton *fontPushButton;
28 QLineEdit *fileLineEdit;
29 QLineEdit *fontLineEdit;
30 QFrame *colorFrame;
31 private slots:
32 void slotOpenFileDlg();
33 void slotOpenColorDlg();
34 void slotOpenFontDlg();
35 };
36
37 #endif // STANDDIALOGS_H
#include "StandDialogs.h"
StandDialogs::StandDialogs(QWidget *parent,Qt::WindowFlags f)
:QDialog(parent,f)
{
QTextCodec *codec=QTextCodec::codecForName("utf-8");
//设置窗体标题
parent->setWindowTitle(codec->toUnicode("标准对话框"));
layout=new QGridLayout(parent);
filePushButton=new QPushButton;
filePushButton->setText(codec->toUnicode("文件选择"));
colorPushButton=new QPushButton;
colorPushButton->setText(codec->toUnicode("颜色选择"));
fontPushButton=new QPushButton;
fontPushButton->setText(codec->toUnicode("字体选择"));
//当用户选择不同的颜色时,ColorFrame会根据用户选择的颜色更新其背景
colorFrame=new QFrame;
colorFrame->setFrameShape(QFrame::Box);
colorFrame->setAutoFillBackground(true);
//当用户选择不同的字体时,fontLineEdit会根据用户选择的字体不同更新其内容
fileLineEdit=new QLineEdit;
fontLineEdit=new QLineEdit;
fontLineEdit->setText(codec->toUnicode("青 翼"));
//将控件添加到QGridLayout上
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()));
}
StandDialogs::~StandDialogs()
{
}
void StandDialogs::slotOpenFileDlg()
{
QString s=QFileDialog::getOpenFileName(
this,
"Open File Dialog",
"/",
"C++ files(*.cpp);; C files(*.c);;Head files(*.h)");
fileLineEdit->setText(s.toAscii());
}
void StandDialogs::slotOpenColorDlg()
{
QColor color=QColorDialog::getColor(Qt::green);
if(color.isValid())
{
colorFrame->setPalette(QPalette(color));
}
}
void StandDialogs::slotOpenFontDlg()
{
bool ok;
QFont font=QFontDialog::getFont(&ok);
if(ok)
{
fontLineEdit->setFont(font);
}
}
#include <QApplication>
#include "StandDialogs.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget widget;
widget.resize(400,300);
widget.show();
StandDialogs stdDialog(&widget,0);
return app.exec();
}



浙公网安备 33010602011771号