QT+模态对话框与非模态对话框
2024-10-19 14:47:29
#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
最新文章
- iOS地图 -- 区域监听的实现和小练习
- spoj 371 Boxes
- jackson对多态or多子类序列化的处理配置
- [ZZ] C++ pair
- Win32多线程编程(2) — 线程控制
- [Git] --no-verify
- 10、 iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile
- git@osc使用教程
- react-native添加react-native-vector-icons插件android遇到的问题
- Vim保存时权限不足
- jQuery属性attr
- JavaScript基本内容
- POJ 3080 Blue Jeans 后缀数组, 高度数组 难度:1
- anu - children
- android开发学习之ViewPager滑动事件讲解
- Orchard 介绍
- NSURLConnection经常使用的代理方法
- 单词 (Play on Words UVA - 10129 )
- <;Perl算法小菜>;排序加速--Schwatzian变换及Guttman-Rosler变换
- 【Python音乐生成】可能有用的一些Python库
热门文章
- UVa 1642 Magical GCD (暴力+数论)
- Hibernate3--快速入门--第一天
- Codeforces 550B 【暴力】
- hdoj1074【A的无比爆炸】
- HttpClient替换HttpWebRequest--以GET和POST请求为例说明
- SpringBoot | 读取配置文件信息
- 在vue组件的stylus样式总 取消search类型的input按钮中默认样式
- STM32CUBEMX使用注意:
- Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)
- Codeforces Round #243 (Div. 1)