关于QGraphicsScene 和 QGraphicsView 和 QDialog 的杂乱笔记【或说指针复习。。】
LtCalibrateDlg::~LtCalibrateDlg()
{
if (m_pIplImageGray) cvReleaseImage(&m_pIplImageGray); MYDELETE(m_pKeyboard);
MYDELETE(m_pNumKeyboard); delete m_pView; // LtCalibrateView* 成员变量;
delete m_pScene; // QGraphicsScene* 成员变量;
delete m_pAboveWnd; delete ui;
}
LtCalibrateDlg类中含有LtCalibrateView* 成员变量; QGraphicsScene* 成员变量; IplImage* 成员变量 etc.
LtCalibrateView::~LtCalibrateView()
{
MYDELETE(m_pCircle);
MYDELETE(m_pRing);
MYDELETE(m_pFitCircle);
MYDELETE(m_pLineRect);
MYDELETE(m_pFitLine);
if (m_pIplImageGray) cvReleaseImage(&m_pIplImageGray);
m_pDlg = NULL; // LtCalibrateView* 成员变量;
m_pScene = NULL; // QGraphicsScene* 成员变量;
}
LtCalibrateView类中含有LtCalibrateDlg* 成员变量; QGraphicsScene* 成员变量; IplImage* 成员变量 etc.
#define MYDELETE(p) {if (p) { delete p; p = NULL;}} 在该项目中(Smart2016):
有且只有一个 LtCalibrateDlg 型变量 和 LtCalibrateView 型变量,各自中相应类型的指针成员指向对方,共用同一个 scene ,即 俩者中的 m_pScene 指向同一份内存。(注意 view 和 dlg 中的 IplImage* 指向俩份不同内存
而 item 变量在 view 类中分配内存。故释放空间时(以 LtCalibrateDlg 窗口关闭为触发时机),先删除 view ,在其析构中回收 Item 内存,而只将 dlg 指针 和 scene 指针 置为 NULL(未 delete, 真正的 delete 操作在dlg
中)。而由于俩者的 IplImage* 成员指针指向不同内存,故直接删除即可。
ps: Qt中 delete scene 操作默认会执行 scene.clear(); 在执行相关操作时需注意
关于QGraphicsScene 和 QGraphicsView 和 QDialog 的杂乱笔记【或说指针复习。。】的更多相关文章
- [百度空间] [原]MFC杂乱笔记
1. 创建动态菜单 假如ID是动态分配的,那么重载virtual BOOLOnCmdMsg(UINT,int,void*,AFX_CMDHANDLERINFO*); 据MSDN不详细解释,当第二个参数 ...
- thinkphp 杂乱笔记(1)
部署模式可用两个单入口表示前后台thinkphpUploadspublic Home(前台)Admin(后台)index.php(前台入口文件)admin.php(后台入口文件)上面两个项目目录 也可 ...
- 阅读记录:Learning multiple layers of representation(杂乱笔记)
典型的浅层学习结构: 传统隐马尔可夫模型(HMM).条件随机场 (CRFs).最大熵模型(Maxent).支持向量机(SVM).核回归及仅含单隐层的多层感知器(MLP)等. 局部表示,分布式表示和稀疏 ...
- 开源分布式日志系统ExceptionLess部署杂乱笔记 加密
前两天看到了这篇文章,亲身体会了下,确实不错,按照官方的文档试了试本地部署,折腾一番后终于成功,记下心得在此,不敢独享. 本地部署官方wiki .NET 4.6.1 这个因为我装了VS2015,就没有 ...
- 初学struts2杂乱笔记
1.在web.xml文件里定义struts2里的一个过滤类org.apache.struts2.dispatcher.FilterDispatcher 2.在src目录下创建struts.xml文件, ...
- Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解
Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...
- QGraphicsView,QGraphicsScene,QGraphicsItem
参考:Qt4 开发实践第八章 图形视图QGraphicsView #ifndef DRIVEDGRAPH_H #define DRIVEDGRAPH_H #include <QObject> ...
- Qt5图形视图框架的“俄罗斯方块”(使用了QGraphicsView)
Qt5 图形视图框架QGraphicsView 1.图形视图框架包含三大类:场景类(QGraphicsScene),视图类(QGraphicsView),图元类(QGraphicsItem): 2.对 ...
- QDialog 模态对话框与事件循环(exec其实就是调用了show和eventLoop.exec)
起源 qtcn中文论坛中有网友问到: 假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体上的事件.当此程序运行到某阶段时,弹出一个模态窗体B(书上 ...
随机推荐
- javascript百度地图添加一个普通标注点(2014-3-8 记)
1.导入jquery.js文件:<script type="text/javascript" src="js/jquery.js"></scr ...
- 爷爷辈儿的AX
你是否见过第一版的AXAPTA? @FlemmingLR 晒出了他收藏的老光盘. 这就是爷爷辈儿的AX——AXAPTA Version 1.0.
- asp.net core 通过 TeamCity 实现持续集成笔记
0x00 很早之前就想体验一把持续集成的快感,然后刚好手头上有个 asp.net core 的项目,就想来部署一下持续集成.一开始我是想用 Jenkins 的,弄了好半天,git 仓库没法同步下来,我 ...
- ios html5 网页取消默认样式
ios的的默认样式修改成扁平化的样式 重要的一句css -webkit-appearance: none; 将样式清除 单数会出现将raido的选择按钮也会消失 所以需要对radio的样式进行重新 ...
- SQL GROUP BY 后排序
由于GROUP BY 使用Sum函数后 ID等唯一值就无法查询出来了,所以想按照ID排序也就不可以了. 这时可以使用一个MIN 或者MAX函数来取得一个最小或者最大的ID 这样就可以实现以其中一条ID ...
- 离线安装Cloudera Manager 5和CDH5(最新版5.1.3) 完全教程
关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...
- hdu 4283 You Are the One 区间dp
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 深入浅出设计模式——观察者模式(Observer Pattern)
模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应.在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而 ...
- 跨站脚本 XSS<一:防御方法>
1. 过滤特殊字符 避免XSS的方法之一主要是将用户所提供的内容进行过滤,许多语言都有提供对HTML的过滤: PHP的htmlentities()或是htmlspecialchars(). Pytho ...
- 《利用python进行数据分析》读书笔记--第十一章 金融和经济数据应用(一)
自2005年开始,python在金融行业中的应用越来越多,这主要得益于越来越成熟的函数库(NumPy和pandas)以及大量经验丰富的程序员.许多机构发现python不仅非常适合成为交互式的分析环境, ...