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. hdu3966 点权模板-树链部分

    Aragorn's Story Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. bzoj4558[JLoi2016]方 容斥+count

    4558: [JLoi2016]方 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 452  Solved: 205[Submit][Status][D ...

  3. bzoj2669[cqoi2012]局部极小值 容斥+状压dp

    2669: [cqoi2012]局部极小值 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 774  Solved: 411[Submit][Status ...

  4. wpf中静态资源和动态资源的区别

    静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了. 动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源.

  5. 上传本地项目到Github

    进入要上传的本地文件夹,右键打开Git Bash Here,然后进行以下步骤: 1.在命令行中,输入"git init",使Test文件夹加入git管理: 2.输入"gi ...

  6. tf.contrib.seq2seq.sequence_loss example:seqence loss 实例代码

    #!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np params=np.r ...

  7. python2.7入门---条件语句

        前段时间呢,把MongoDB的基础内容了解的差不多了.接下来,就开始学习python2.7的基础内容喽.接着前面的知识点来学习.首先,来看一下条件语句.Python条件语句是通过一条或多条语句 ...

  8. Windows上安装scapy

    1. 环境: (1) 操作系统:win7 .server2012 (2) Python版本:Python3.6-64bit (3) 依赖模块Npcap(推荐) 或WinPcap.   ps:从logo ...

  9. Linux安装JProfiler监控tomcat

    下载JProfiler包wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_2.rpm 安装JPro ...

  10. Java中的网络支持InetAddress&URL

    针对网络通信的不同层次,Java提供的网络功能有四大类 InetAddress:用于标识网络上的硬件资源.(说白了就是IP地址的相关信息) URL:统一资源定位符,通过URL可以直接读取或写入网络上的 ...