原文地址:http://blog.csdn.net/baidu_18991997/article/details/42713159

代码实现功能:单击某个按钮后,弹出对话框,对话框中的内容可自行设计。

1.建立一个主界面,主界面中有一个pushbotton按键。

2.右键项目->添加新文件->Qt设计师界面类

Part II——对话框的模态和非模态

1、  建立一个对话框类:

2、  对话框中放置pushbutton和TextEdit:

3、  转到主窗口菜单栏New Window的槽:

4、  在槽中插入如下代码(并且在mainwindow.h中要建立对话框的指针):

5、显示结果如下:

(1)非模态显示(dialog->setModal(false)):

(2)模态显示(dialog->setModal(ture)):

给出完整程序(只给出需要填写代码和有注释部分,无改动的不给出):

mainwindow.h程序:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include"mydialog.h"
namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); private slots:
void on_actionNew_Window_triggered(); private:
Ui::MainWindow *ui;
MyDialog *dialog; //添加私有成员,为一个dailog(窗口)的指针
}; #endif // MAINWINDOW_H

mainwindow.cpp程序:

#include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//把给定的组件设定成主窗口的中央组件,这里是把plainTextEdit设为窗口的中央组件
setCentralWidget(ui->plainTextEdit);
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::on_actionNew_Window_triggered()
{
//新建一个窗口对象,其中的this指定了新的窗口的父对象是MainWindow,在销毁Mainwindow时也会销毁子对象,即该窗口对象
dialog = new MyDialog(this);
//Modal属性决定了show()应该将弹出的dialog设置为模态还是非模态
//默认情况下该属性为false并且show()弹出的窗口是非模态的
//把这个属性设置为true就详单与设置QWidget::windowModality为Qt::ApplicationModal
//执行exec()忽略这个Modal这个属性,并且把弹出的dialog设置为模态的
dialog->setModal(false); //此处ture为模态,false为非模态
dialog->show();
}

main.cpp程序:

//2014/8/3 wayne HDU
//问题描述:(1)创建一个mainwindow(2)创建一个dialog,并且展示modal和modaless的区别
#include "mainwindow.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); return a.exec();

Part II——对话框的模态和非模态

1、  建立一个对话框类:

2、  对话框中放置pushbutton和TextEdit:

3、  转到主窗口菜单栏New Window的槽:

4、  在槽中插入如下代码(并且在mainwindow.h中要建立对话框的指针):

5、显示结果如下:

(1)非模态显示(dialog->setModal(false)):

(2)模态显示(dialog->setModal(ture)):

给出完整程序(只给出需要填写代码和有注释部分,无改动的不给出):

mainwindow.h程序:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include"mydialog.h"
namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); private slots:
void on_actionNew_Window_triggered(); private:
Ui::MainWindow *ui;
MyDialog *dialog; //添加私有成员,为一个dailog(窗口)的指针
}; #endif // MAINWINDOW_H

mainwindow.cpp程序:

#include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//把给定的组件设定成主窗口的中央组件,这里是把plainTextEdit设为窗口的中央组件
setCentralWidget(ui->plainTextEdit);
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::on_actionNew_Window_triggered()
{
//新建一个窗口对象,其中的this指定了新的窗口的父对象是MainWindow,在销毁Mainwindow时也会销毁子对象,即该窗口对象
dialog = new MyDialog(this);
//Modal属性决定了show()应该将弹出的dialog设置为模态还是非模态
//默认情况下该属性为false并且show()弹出的窗口是非模态的
//把这个属性设置为true就详单与设置QWidget::windowModality为Qt::ApplicationModal
//执行exec()忽略这个Modal这个属性,并且把弹出的dialog设置为模态的
dialog->setModal(false); //此处ture为模态,false为非模态
dialog->show();
}

main.cpp程序:

//2014/8/3 wayne HDU
//问题描述:(1)创建一个mainwindow(2)创建一个dialog,并且展示modal和modaless的区别
#include "mainwindow.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); return a.exec();

【转】QT创建子对话框的方法的更多相关文章

  1. QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例

    QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->ad ...

  2. QT创建与调用Dll方法(包括类成员)--显式调用

    看网上的好多关于QT调用Dll的方法,大部分都是调用函数的,并没有调用C++类成员的情况,即使是有,比如说: 使用Qt编写模块化插件式应用程序 Qt 一步一步实现dll调用(附源码)---(这一篇里没 ...

  3. MFC在子线程中创建窗口(PostMessage方法)

    1.创建子线程 C++创建线程的方式比较多 1)最简单易用的<thread>头文件,但是这种方法创建的子线程中无法给主线程PostMessage消息(也可能是我操作有误,总之没成功) 2) ...

  4. QT学习之路--创建一个对话框

    Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...

  5. Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法

    详细说明:Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法.该方法可以在运行时在内存中直接建立对话框资源,使用起来更为灵活.适用于多个开发项目共享有界面的公用程序模 ...

  6. QT源码解析(七)Qt创建窗体的过程,作者“ tingsking18 ”(真正的创建QPushButton是在show()方法中,show()方法又调用了setVisible方法)

    前言:分析Qt的代码也有一段时间了,以前在进行QT源码解析的时候总是使用ue,一个函数名在QTDIR/src目录下反复的查找,然后分析函数之间的调用关系,效率实在是太低了,最近总结出一个更简便的方法, ...

  7. Creating Dialogbased Windows Application (2) / 创建基于对话框的Windows应用程序(二)Button的应用、新建子窗体 / VC++, Windows

    创建基于对话框的Windows应用程序(二) —— Button的应用.新建子窗体 可以发现上一节创建的窗体中,点击OK和Cancel两个按钮是没有任何反应的.现在我们来为他们添加退出对话框的功能. ...

  8. 第八章 Qt GUI之对话框使用

    第八章 Qt GUI之对话框使用 对话框可以是模态(modal)的或非模态(modeless)两种.当我们在一个用户界面程序里面对一个对话框(比如选择文件对话框)的操作没有结束前,界面的其他窗口无法操 ...

  9. QT学习 之 对话框 (四) 字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

    QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的 ...

随机推荐

  1. Jmeter HTTPS接口测试的证书导入

    HTTP和HTTPS测试时稍有不同,HTTPS需要加载证书,端口也不一样,操作如下: 1. 下载被测网址证书导入 测试时用的是谷歌浏览器 生成.cer后缀的文件 2. 把导出的证书转换成.store格 ...

  2. 【第一周】 网络爬虫之规则 北京理工大学嵩天 mooc

    rrequests库的7个主要方法 方法 说明 requests.request() 构造一个请求,支撑以下各方法的基础方法 requests.get() 获取HTML网页的主要方法,对应于HTTP的 ...

  3. CentOS 7 设置日期和时间

    现代操作系统分为以下两种类型的时钟: 实时时钟(Real-Time Clock,RTC),通常称为硬件时钟(一般是系统主板上的集成电路),它完全独立于操作系统的当前状态,即使在计算机关闭时也能运行. ...

  4. vcftools安装与使用

    官网地址:https://vcftools.github.io/examples.html vcftools的软件下载:https://vcftools.github.io/examples.html ...

  5. ubuntu下安装和更新R语言

    R官网更新说明 https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu/README.html 本文主要讲解在ubuntu下如何安装和更新 ...

  6. 解决页面使用overflow: scroll,overflow-y:hidden在iOS上滑动卡顿的问题

    解决页面使用overflow: scroll,overflow-y:hidden在iOS上滑动卡顿的问题 div{ width: 100%; overflow-y: hidden; -webkit-o ...

  7. flume将数据发送到kafka、hdfs、hive、http、netcat等模式的使用总结

    1.source为http模式,sink为logger模式,将数据在控制台打印出来. conf配置文件如下: # Name the components on this agent a1.source ...

  8. 从source安装python3.5和pip

    按顺序来,先装上python3.5,source安装,命令是 ./configure --prefix="你想要的路径" make make install 然后是安装pip,但是 ...

  9. 地牢逃脱----DFS搜索最优解

    https://www.nowcoder.com/practice/0385945b7d834a99bc0010e67f892e38?tpId=85&tqId=29831&tPage= ...

  10. PIE SDK均值滤波

    1.算法功能简介 均值滤波是最常用的线性低通滤波,它均等地对待邻域中的每个像素.对于每个像素,取邻域像素值的平均作为该像素的新值.均值滤波算法简单,计算速度快,对高斯噪声比较有效.从频率域的角度看,相 ...