您的位置:首页 > 编程语言 > Qt开发

2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口

2014-12-13 22:47 555 查看


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


编写: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();

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐