1 新建一个空项目
A 编写 .pro文件
QT += gui widgets
HEADERS += \
MyDialog.h
SOURCES += \
MyDialog.cpp
B 编写MyDialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
class MyDialog:public QDialog
{
Q_OBJECT
public:
explicit MyDialog(QWidget *parent = 0);
QString _strDir;
void paintEvent(QPaintEvent *);
signals:
public slots:
void slotButtonClick();
};
#endif // MYDIALOG_H
C 编写:MyDialog.cpp
#include "MyDialog.h"
#include <QPushButton>
#include <QDebug>
#include <QFileDialog>
#include <QFileInfo>
#include <QColorDialog>
#include <QFontDialog>
#include <QMessageBox>
#include <QPainter>
#include <QApplication>
MyDialog::MyDialog(QWidget *parent) :
QDialog(parent)
{
QPushButton* button = new QPushButton("Click me",this);
connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClick()));
}
void MyDialog::slotButtonClick()
{
#if 0
QDialog* dlg = new QDialog;
int ret;
QPushButton* button = new QPushButton(dlg);
connect(button, SIGNAL(clicked()), dlg, SLOT(reject()));
/*
* 在模态对话框中,exec有自己的消息循环,并且把app的消息循环接管了
* 如果Dialog是通过exec来显示,那么可以通过accepted或者rejected来关闭
* 窗口,如果Dialog是通过show来显示,那么可以通过close来关闭窗口,
* 这个和QWidget一样的
*
* 有许多特殊的dailog:文件选择,MessageBox,颜色选择,字体选择,打印预览,打印
*/
ret = dlg->exec();
if(ret == QDialog::Accepted)
{
qDebug() << "accepted";
}
if(ret == QDialog::Rejected)
{
qDebug() << "rejected";
}
//上面的运行结果如下:
#endif
#if 0
//通过下面的方式打开保存文件
QString strFilename = QFileDialog::getSaveFileName(
NULL,
"Select file for save",
_strDir,
"pic file (*.png *.jpg)");
//运行结果:
#endif
#if 0
//打开一个文件
#endif
#if 0
//选择一个存在的文件夹
QString strFilename = QFileDialog::getExistingDirectory();
if(strFilename.isEmpty())
{
qDebug() << "select none";
return;
}
qDebug() << strFilename;
QFileInfo fileInfo(strFilename);
_strDir = fileInfo.filePath();
#endif
#if 0
//颜色选择框
QColorDialog color;
color.exec();
QColor c = color.selectedColor();
#endif
#if 0
//字体选择器
QFontDialog fontDialog;
fontDialog.exec();
QFont font = fontDialog.selectedFont();
#endif
#if 0
//MessageBox,消息提示窗口
int ret = QMessageBox::question(this, "????", "realy do .......",
QMessageBox::Yes| QMessageBox::No|
QMessageBox::YesAll| QMessageBox::NoAll);
if(ret == QMessageBox::Yes)
{
qDebug() << "user select yes";
}
if(ret == QMessageBox::No)
{
qDebug() << "user select no";
}
#endif
}
void MyDialog::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawLine(QLine(0,0,200,200));
}
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
MyDialog dlg;
dlg.show();
return app.exec();
}