#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDialog>
#include<QDebug>
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()<<"";
});
//非模态
QAction *p2 = menu->addAction("非模态对话框");
connect(p2,&QAction::triggered,[=](){ /*使用如下代码的时候,会发现其窗口会一闪而过,这是因为这种方式是局部变量的方式,其顺序执行,并释放内存,所以就会一闪而过。
* QDialog dlg;
* dlg.show();
* qDebug()<<"111111";
*
*/ /*为了防止其一闪而过,将其定义为成员变量
* 这种使用全局变量的方式,是最简单的,不用考虑内存泄漏的问题
* 即:将QDialog dlg;声明为全局变量,将其定义在mainwindow.h中类的成员变量。
* 再添加如下代码:
* dlg.show();
* qDebug()<<"111111";
* / /*当然了,为了方便,如果非要使用局部变量的话,也是可以的,那就给他动态分配空间
* QDialog *p = new QDialog(this);
* p->show();
* 但是这么写的有一个不好的地方,这种方法创建的窗口在程序结束的时候才会释放。
* 考虑一个极限,经常的点击这个按钮,就意味着这个程序不结束,程序就会动态的分配n多次的空间,这样就导致内存越用越少。
* 所以这里通常就不指定父对象:
* QDialog *p = new QDialog;
* p->show();
* 但是不指定父对象的话,就意味着不在对象树上,那么怎么释放它的对象呢?
* 幸好,对话框有一个属性。即:p ->setAttribute(1);
* 最终:
* QDialog *p = new QDialog;
* p ->setAttribute(1);
* p->show();
*/
QDialog *p = new QDialog;
p ->setAttribute(Qt::WA_DeleteOnClose);
p->show(); });
} MainWindow::~MainWindow()
{ }
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QDialog>
class MainWindow : public QMainWindow
{
Q_OBJECT public:
MainWindow(QWidget *parent = );
~MainWindow();
QDialog dlg;//自定义为全局变量(成员变量)
}; #endif // MAINWINDOW_H

最新文章

  1. iOS地图 -- 区域监听的实现和小练习
  2. spoj 371 Boxes
  3. jackson对多态or多子类序列化的处理配置
  4. [ZZ] C++ pair
  5. Win32多线程编程(2) — 线程控制
  6. [Git] --no-verify
  7. 10、 iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile
  8. git@osc使用教程
  9. react-native添加react-native-vector-icons插件android遇到的问题
  10. Vim保存时权限不足
  11. jQuery属性attr
  12. JavaScript基本内容
  13. POJ 3080 Blue Jeans 后缀数组, 高度数组 难度:1
  14. anu - children
  15. android开发学习之ViewPager滑动事件讲解
  16. Orchard 介绍
  17. NSURLConnection经常使用的代理方法
  18. 单词 (Play on Words UVA - 10129 )
  19. &lt;Perl算法小菜&gt;排序加速--Schwatzian变换及Guttman-Rosler变换
  20. 【Python音乐生成】可能有用的一些Python库

热门文章

  1. UVa 1642 Magical GCD (暴力+数论)
  2. Hibernate3--快速入门--第一天
  3. Codeforces 550B 【暴力】
  4. hdoj1074【A的无比爆炸】
  5. HttpClient替换HttpWebRequest--以GET和POST请求为例说明
  6. SpringBoot | 读取配置文件信息
  7. 在vue组件的stylus样式总 取消search类型的input按钮中默认样式
  8. STM32CUBEMX使用注意:
  9. Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)
  10. Codeforces Round #243 (Div. 1)