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

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

2014-12-13 22:47 423 查看


1
新建一个空项目

A
编写.pro文件

QT
+=
guiwidgets

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=newQPushButton("Clickme",this);

connect(button,SIGNAL(clicked()),this,SLOT(slotButtonClick()));

}


voidMyDialog::slotButtonClick()

{

#if0

QDialog*dlg=newQDialog;

intret;

QPushButton*button=newQPushButton(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

#if0

//通过下面的方式打开保存文件

QStringstrFilename=QFileDialog::getSaveFileName(

NULL,

"Selectfileforsave",

_strDir,

"picfile(*.png*.jpg)");

//运行结果:




#endif

#if0

//打开一个文件




#endif

#if0

//选择一个存在的文件夹

QStringstrFilename=QFileDialog::getExistingDirectory();

if(strFilename.isEmpty())

{

qDebug()<<"selectnone";

return;

}


qDebug()<<strFilename;

QFileInfofileInfo(strFilename);

_strDir=fileInfo.filePath();




#endif

#if0

//颜色选择框

QColorDialogcolor;

color.exec();

QColorc=color.selectedColor();




#endif

#if0

//字体选择器

QFontDialogfontDialog;

fontDialog.exec();

QFontfont=fontDialog.selectedFont();




#endif

#if0

//MessageBox,消息提示窗口

intret=QMessageBox::question(this,"????","realydo.......",

QMessageBox::Yes|QMessageBox::No|

QMessageBox::YesAll|QMessageBox::NoAll);

if(ret==QMessageBox::Yes)

{

qDebug()<<"userselectyes";

}

if(ret==QMessageBox::No)

{

qDebug()<<"userselectno";

}




#endif

}


voidMyDialog::paintEvent(QPaintEvent*)

{

QPainterp(this);

p.drawLine(QLine(0,0,200,200));

}


intmain(intargc,char*argv[])

{

QApplicationapp(argc,argv);


MyDialogdlg;

dlg.show();


returnapp.exec();

}

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