文档章节

Qt中的对话框(模态,非模态,关于,问题,文件)

startstorm
 startstorm
发布于 2017/02/27 22:37
字数 480
阅读 146
收藏 0
点赞 0
评论 0

项目pro中添加

CONFIG += C++11

mianwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDialog>      //对话框类

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);  
    ~MainWindow();

    QDialog dlg;

};

#endif // MAINWINDOW_H

mianwindow.cpp

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog> /*文件对话框*/

/*模态对话框和非模态对话框*/

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenuBar *mBar = menuBar();
    setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("对话框");
/*模态对话框*/
    QAction *p1 = menu->addAction("模态对话框");
    connect(p1,&QAction::triggered,
           [=]()
            {
                QDialog dlg;
                dlg.exec();
                qDebug() << "1111";
            }


            );
/*非模态对话框*/
    QAction *p2 = menu->addAction("非模态对话框");
    connect(p2,&QAction::triggered,
           [=]()
            {
/*第一种添加成员函数
                dlg.show();
                qDebug() << "1111";*/
/*第二种new一个新对象,没有delete或者Qt成程序结束不会释放空间
                QDialog *p = new QDialog(this);
                p->show();*/
//第三种,设置属性,一般推荐第三种
                QDialog *p = new QDialog();
                p->setAttribute(Qt::WA_DeleteOnClose);
                p->show();
            }
            );
/*关于对话框QMessagebox*/
    QAction *p3 = menu->addAction("关于对话框");
    connect(p3,&QAction::triggered,
           [=]()
            {
               QMessageBox::about(this,"about","关于Qt");
            }
            );
/*问题对话框*/
    QAction *p4 = menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,
           [=]()
            {
               int ret = QMessageBox::question(this,"问题","是否保存",
                                               QMessageBox::Ok |
                                               QMessageBox::Cancel
                                               );
               switch(ret)
               {
                    case QMessageBox::Ok:
                            qDebug()<<"i am ok";
                            break;
                    case QMessageBox::Cancel:
                            qDebug()<<"i am no";
                            break;
                    default:
                            break;
               }
            }
            );
 /*文件对话框*/
    QAction *p5 = menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,
           [=]()
            {
               QString path = QFileDialog::getOpenFileName(
                                            this,
                                            "open",
                                            "../",
                               "source(*.cpp *.h);;Text(*.txt);;All(*.*)"
                                            );
               qDebug() << path;
            }
            );
}

MainWindow::~MainWindow()
{

}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

运行效果,会产生模态对话框,非模态对话框,关于对话框和问题对话框,以及文件对话框。

非模态对话框有三种方法,(1)类的成员方法(2)new一个新对象(3)设置属性,推荐使用第三种。

关于对话框和问题对话框可以设置不同属性。

文件对话框可以筛选文件类型。

截图展示:

 

© 著作权归作者所有

共有 人打赏支持
startstorm
粉丝 6
博文 53
码字总数 21034
作品 0
浦东
程序员
Qt下的模态和非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被...

晨曦之光 ⋅ 2012/04/13 ⋅ 0

【Qt笔记】对话框简介

对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户...

大道无名 ⋅ 2016/07/29 ⋅ 0

Qt 主窗口点击按钮 弹出另一个自定义窗口

为将要进行的工作做准备。 代码实现功能:单击某个按钮后,弹出对话框,对话框中的内容可自行设计。 1. 建立一个主界面,主界面中有一个pushbotton按键。 2.右键项目->添加新文件->Qt设计师界...

m0_37143327 ⋅ 05/10 ⋅ 0

【Qt笔记】对话框数据传递

对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。本节将讲解如何在对话框和主窗口之间进行数据交互。按照前文的讲解,对话框分为模态和非模态两种。...

大道无名 ⋅ 2016/07/29 ⋅ 0

漫谈QWidget及其派生类(四)

漫谈QWidget及其派生类(三)中我们了QMainWindow到底是个什么东西,接下来就看看QDialog吧,没办法,谁让它这么常用呢? 很多人觉得QDialog比QWidget高级很多,为什么呢? QDialog(this) 和 ...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

QDialog 模态对话框与事件循环

起源 qtcn中文论坛中有网友问到: 假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体上的事件。当此程序运行到某阶段时,弹出一个模态...

晨曦之光 ⋅ 2012/05/08 ⋅ 0

topic8:Qt入门之常用控件认知之QDialog

对话框,顾名思义就是用于“对话”的交互窗口。其主要是体现人机交互的一个重要的方式和渠道。交互要达到实时性,其优先级也相对较高,所以一般对话框都是没有父窗口的顶级的窗口。如果对话框...

zhouhb1 ⋅ 2013/07/13 ⋅ 0

模态对话框与非模态对话框的区别

模态对话框和非模态对话框的区别 Windows中对话框分为模态对话框和非模态对话框。 模态对话框是指当该对话框显示后,会屏蔽其父窗口的操作,只允许操作当前对话框。 如:文本文档中的[打开]...

_编程菜鸟_ ⋅ 2014/07/07 ⋅ 0

翻译:《用python和Qt进行GUI编程》——第五章(翻译中)

对话框 基本上任何一个GUI程序都有至少一个对话框,多数的GUI程序又一个主窗口和一沓对话框。当某些重要消息放在状态栏或者日志文件里显得略微不醒目的话,对话框可以对用户声明这个消息。这...

duoduo3_69 ⋅ 2013/02/23 ⋅ 0

Qt中动态加载窗口

在编程中,我经常会遇见要根据用户触发按钮,动态生成窗口的情况。在此有两种方法可以动态生成窗口:一:直接在槽函数中调用窗口类。二:将**.ui添加到资源文件,通过QUiLoader加载。 现将两...

乔三爷 ⋅ 2017/08/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 15分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 16分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 17分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 20分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 30分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 33分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 35分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 36分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 48分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 49分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部