关于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(书上 ...
随机推荐
- Date类型,Boolean类型,Number类型
1.Date类型: 1)创建Date对象: var date=new Date(); //Date对象会把当前日期和时间保存为其初始值 2)Date对象的方法: --这些得到的都是数字 ...
- extjs 一些杂碎的技术问题
1怎样将grid 的checkedbox 勾选状态都清除 inv.getSelectionModel().clearSelections(); inv.getView().refresh(); 2怎样 ...
- Exception&Error
Java异常处理 1:什么是异常 异常(Exception)也叫异常.在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题.软件设计错误.缺陷等导致的程序错误. 1.1:想打开的文件不存在 ...
- 调度系统任务创建---创建一个MultiJob的任务(四)
我们如果下面这种拓扑结构的调度任务,该任务的拓扑结构就是一个有向五环图DAG,有fork,有join的操作等. 可以通过jenkins创建MultiJob的任务实现: 实例任务的拓扑结构: Multi ...
- Java使用BigDecimal精确计算的简单公式计算器
由于工作需要,写了一个使用BigDecimal运算的精确计算的计算器(然后发现其实比不用BigDecimal的并好不到哪里去) 只能做加减乘除 double类型的数字在千万级别的时候会转成科学计数法, ...
- zabbix3.0.4 部署之四 (LNAP > PHP安装)
1.安装依赖 安装epel-release源 安装 libiconv-1.14.tar.gz (这个还有个devl包) libmcrypt-2.5.8.tar.gz mhash-0.9.9.9. ...
- C++类的交叉引用
对于C++中,两个类中相互引用对方,当然只能是在指针的基础上,于是我们知道.也就是说在A类的有一个指针引用B类的成员函数或成员对象,而B类中又有一个指针来访问A中的成员函数或对象.这就是C++中类的交 ...
- 实现文本框默认灰色文字,点击消失,如果没输入内容可再返回原来的灰色文字(js版)
$(document).ready(function(){ $("#biaoqian").val('这里是默认的灰色文字'); $("#biaoqian").c ...
- 转: Vue.js——60分钟组件快速入门(上篇)
转自: http://www.cnblogs.com/keepfool/p/5625583.html Vue.js——60分钟组件快速入门(上篇) 组件简介 组件系统是Vue.js其中一个重要的概 ...
- 调用天气预报webservice
<script src="jquery.js" type="text/javascript" charset="utf-8">& ...