关于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(书上 ...
随机推荐
- mysql 乱码问题
A.mysql设置 1.service mysql stop 2.sudo vim /etc/mysql/my.cnf 在[mysqld]中添加下面两行 character_set_server = ...
- latex 异或
用\lxor \(\lxor\) 用\veebar \(\veebar\) 用\oplus \(\oplus\) ... 怎么不是我想象的那样... 算了.
- Python namedtuple
我们都知道Python中的tuple是一个非常高效的集合对象,但是我们只能通过索引的方式访问这个集合中的元素,比如下面的代码: Bob=('bob',30,'male') print'Represen ...
- Android:Butter Knife 8.0.1配置
github地址:https://github.com/GarsonZhang/butterknife Butter Knife Field and method binding for Androi ...
- VB.NET vs. C#
VB.NET Program Structure C# Imports System Namespace Hello Class HelloWorld Overloads Shar ...
- Linux_导出函数
1.linux 下查看 .so 导出函数列表(http://blog.csdn.net/wangweixaut061/article/details/7164809) nm -D 7z.so objd ...
- 关于xcode不同版本打开相同工程问题
今天刚下好了xcode7正式版,于是乎用其创建一个工程.随后关闭此工程用xcode6.3打开此工程.发现报错不能运行,随后网上查资料,可惜中文版的资料几乎可以说是没有,因此写下此文,以方便其他遇到此情 ...
- json 后台传前台
jsonObject需实例化new.jsonObject=new JSONObject();jsonObject.put("goodslist", list);jsonObject ...
- win7文件夹图标中多了一把小锁打不开文件夹怎么办?
win7文件夹图标中多了一把小锁打不开文件夹怎么办?解决办法一:右击目录→取得管理员权限!该方法适用于win7旗舰版.解决办法二:右击目录→属性→安全→高级→选择everyone→更改权限→勾上完全访 ...
- hello word
开通微博,用于记录在工作中遇到的点滴问题. 2015/08/31