原文地址: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. PHP 生成随机数组

    /** 生成指定个数,以及最小最大值随机数组(包括最大值) * @parem $min 随机数组最小值 * @parem $max 随机数组最大值 * @parem $num 随机数组个数,默认max ...

  2. 多气体组分DEM流动的DMP并行内存错误

    今天踩到一个坑.调DEM反应的时候,气体需要设置为多组分,这时就不能用 DES_INTERP_ON = .T. DES_INTERP_SCHEME = 'GARG_2012' 这个差值格式了,否则DM ...

  3. CentOS7 编译安装 php7

    更新:2019-01-25 补充:CentOS 7.5 全新编译安装 PHP-7.3.1 ,补充内容接在原文之后 更新:2018-09-29 补充:新系统下编译安装PHP-7.2.5遇到的问题,补充内 ...

  4. 【算法笔记】B1043 输出PATest

    1043 输出PATest (20 分) 给定一个长度不超过 10​4​​ 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符.当 ...

  5. python数据结构与算法之list

    1. 数据结构的操作 作为一种包含元素的数据结构,需要提供一些“标准”操作: 创建和销毁 判断是否空,如果容量有限,还需判断是否满 向结构中加入元素或从中删除 访问结构里的元素 不同的编程语言可能影响 ...

  6. 文件对象FSO应用 文件对象FSO应用

    FileSystemObject对象被用来访问服务器上的文件系统.这个对象能够处理文件.文件夹和目录路径.用它来检索文件系统信息也是可能的. 下面的代码创建了一个文本文件,并写入了一些文本: dim ...

  7. Angular 怎么在加载中加入 Loading 提示框

    [转自] http://zhidao.baidu.com/link?url=MX9eSRkQbBC8zrjsCi-t_PsftVRSIjiaUTHhdp6eDiZ0IqaZehSCo3n7fFXWyP ...

  8. 剑指offer——面试题15.2:判断两个整数m和n的二进制中相差多少位

    #include"iostream" using namespace std; int CountDifferentBit(int m,int n) { ,diff=m^n; wh ...

  9. PIE SDK算法的自定义扩展

    1.算法功能简介 算法的自定义扩展允许用户自主开发新的算法.自定义的算法必须实现PIE.SystemAlgo.BaseSystemAlgo基础类,这样才能被PIE的算法管理器调用起来. 2.算法功能实 ...

  10. Spring JDBC Framework

    引自 :学习经典:Spring JDBC Framework 这里记录我对Spring JDBC框架的学习.由于Spring JDBC和我之前做的工作有很多共同之处,学习经典Framework的设计, ...