原文地址: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. scrapy的 安装 及 流程 转

    安装 linux 和 mac 直接  pip install scrapy 就行 windows 安装步骤         a. pip3 install wheel       b. 下载twist ...

  2. ggplot你不知道的细节

    例一 Michaelis-Menten动力学方程 这个例子中采用出自文献中的一组有关于浮萍氮摄取的数据,共2两个变量8个观测值,其中底物浓度与浮萍的氮取速率之间可以通过M-M动力学方程来进行描述.在这 ...

  3. LeetCode记录之27——Remove Element

    这道题跟26题很类似,并且有官方的答案.看了官方的答案之后发现写得特别巧,自己做的题太少思路太窄.有意思的是我的算法的时间复杂度是O(N^2),官方的是O(N),我的实际运行时间还少了2ms. ive ...

  4. oracle五种约束的创建和移除:

    .主键约束: 创建表的时候就添加: create table table_name (categoryId varchar2(), categoryName varchar2(), primary k ...

  5. artDialog不能拖拽的问题

    需要引用下面这个文件: https://github.com/aui/artDialog/edit/master/dist/dialog-plus.js

  6. 安装Linux虚拟机到执行Java程序

    1.安装VMware 2.在VMware里安装 CentOs 镜像(CentOS-7.2-x86_64-DVD-1511.iso) 3.启动CentOs后如果不能上网,或者 没有 ifconfig命令 ...

  7. filezilla绑定编辑器

    编辑  - >设置 ->文件格式关联 ->输入需要关联的编辑器的路径

  8. SQL注入(过滤空格和--+等注释符)

    1.地址:http://ctf5.shiyanbar.com/web/index_2.php(过滤了空格和--+等注释符) 思路:确定注入参数值类型,直接输入单引号,根据报错信息确定参数值类型为字符型 ...

  9. DVWA1.9平台XSS小结

    LOW级别就不写了...... 直接上中高级别(结合源码更好理解) 1.XSS Reflected(Medium) 从源码中可以清楚的看到,输入的<script>标签被过滤掉了,看清了,只 ...

  10. BankNote

    # coding=utf-8 import pandas as pd import numpy as np from sklearn import cross_validation import te ...