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
);

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();
}

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

  1. Swift-打开其它Storyboard中的自定义模态窗口

    本文的方法针对OS X应用开发. 如果想在某个ViewController中,用模态窗口的方式,打开某个Storyboard中定义的WindowController.可用以下方式. let story ...

  2. Qt中使用DOM解析XML文件或者字符串二(实例)

    介绍 在Qt中提供了QtXml模块实现了对XML数据的处理,我们在Qt帮助中输入关键字QtXml Module,可以看到该模块的类表.在这里我们可以看到所有相关的类,它们主要是服务于两种操作XML文档 ...

  3. Qt中的非模式窗口配置;

    Test7_5A::Test7_5A(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); m_searchwin = new Searc ...

  4. Qt中使用DOM解析XML文件或者字符串(实例)

    因为需要读取配置文件,我的配置文件采用xml:因此编写了使用qt读取xml文件内容的代码,xml文件如下: <?xml version="1.0" encoding=&quo ...

  5. 19.QT对话框(文件对话框,颜色对话框,字体框,自定义对话框)

    文件对话框 #include<QFileDialog> //文件对话框 void Dialog::on_pushButton_clicked() { //定义显示文件的类型 窗口标题 可供 ...

  6. Qt5:Qt中屏幕或窗口截图功能的实现

    要想在Qt中实现屏幕或窗口截图功能 ,通常有两种方法: 1  -- 使用 QPixmap 类 2  -- 使用 QScreen类 然而虽然俩两种方法用到的类不相同,但是调用到的类成员函数的函数名称和参 ...

  7. [Win32]创建模态窗口

    http://www.cnblogs.com/zplutor/archive/2011/02/20/1958973.html 在Win32编程中,如果要显示一个模态窗口,一般是先创建对话框模板,然后使 ...

  8. qt中建立图片资源文件

    qt中如果你要添加图片资源文件我们需要执行以下步骤: (1)先找好一张图片,这里就不多说了,网上资源很多. (2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下 (3)在qt中新建 ...

  9. iOS:视图切换的第一种方式:模态窗口

    一.UIModalController:模态窗口(一个控制器模态出另一个控制器的模态窗口) 当我们在view controller A中模态显示view controller B的时候,A就充当pre ...

随机推荐

  1. [BZOJ 2144]跳跳棋

    Description 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子.我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他 ...

  2. BZOJ3622 已经没有什么好害怕的了

    Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相 ...

  3. [AHOI2005]约数研究

    题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samu ...

  4. 【模板】KMP字符串匹配

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next. (如果你不知道这是什么意思也不要问,去百度 ...

  5. ●BZOJ 1396 识别子串

    题链: http://www.joyoi.cn/problem/tyvj-2301(非权限OI患者,苟且在joyoi...)题解: 后缀自动机,线段树 先对原串建立后缀自动机,不难发现, 会影响答案是 ...

  6. [BZOJ]1143: [CTSC2008]祭祀river

    题目大意:给定一个n个点m条边的有向无环图,问最多选多少个点使得两两之间互不到达.(n<=100,m<=1000) 思路:题目所求即最长反链,最长反链=最小链覆盖,对每个点向自己能到的所有 ...

  7. linux退出状态码及exit命令

    Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码.对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用$?变量.它的值会变成由shell所执行的最后一条命令的退出状态码: [ro ...

  8. unittest测试框架详谈及实操(二)

    类级别的setUp()方法与tearDown()方法 在实操(一)的例子中,通过setUp()方法为每个测试方法都创建了一个Chrome实例,并且在每个测试方法执行结束后要关闭实例.是不是觉得有个多余 ...

  9. 小程序敏感信息解密-java

    /** * AES解密 * @param content 密文 * @return * @throws InvalidAlgorithmParameterException * @throws NoS ...

  10. aways on 配置部署(一)——准备工作

    sqlserver的aways on 配置需要经历三个步骤,前面两个步骤是对aways on 配置的一个准备步骤. 经过了一个星期的研究,终于成功的完成了前两个步骤,期间参考了很多的资料和博客,总感觉 ...