zoukankan      html  css  js  c++  java
  • 关于QGraphicsScene 和 QGraphicsView 和 QDialog 的杂乱笔记【或说指针复习。。】

     1 LtCalibrateDlg::~LtCalibrateDlg()
     2 {
     3     if (m_pIplImageGray) cvReleaseImage(&m_pIplImageGray);
     4 
     5     MYDELETE(m_pKeyboard);
     6     MYDELETE(m_pNumKeyboard);
     7 
     8     delete m_pView;         //  LtCalibrateView*    成员变量;
     9     delete m_pScene;        //  QGraphicsScene*     成员变量;
    10     delete m_pAboveWnd;
    11 
    12     delete ui;
    13 }
    LtCalibrateDlg类中含有LtCalibrateView* 成员变量; QGraphicsScene* 成员变量; IplImage* 成员变量 etc.
     1 LtCalibrateView::~LtCalibrateView()
     2 {
     3     MYDELETE(m_pCircle);
     4     MYDELETE(m_pRing);
     5     MYDELETE(m_pFitCircle);
     6     MYDELETE(m_pLineRect);
     7     MYDELETE(m_pFitLine);
     8     if (m_pIplImageGray) cvReleaseImage(&m_pIplImageGray);
     9     m_pDlg = NULL;          //  LtCalibrateView*    成员变量;
    10     m_pScene = NULL;        //  QGraphicsScene*     成员变量;
    11 }
    LtCalibrateView类中含有LtCalibrateDlg* 成员变量; QGraphicsScene* 成员变量; IplImage* 成员变量 etc.
     1 #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(); 在执行相关操作时需注意


     
  • 相关阅读:
    jstl核心标签库
    乱码的解决
    eclipse 中 Servlet 模板代码(其实是代码提示模板)
    因为最近一直在和数据库打交道,所以做了几个小封装
    意外发现的大批量导入数据SqlBulkCopy类
    Http相关
    Tomcat相关
    对于反射中的invoke()方法的理解
    SqlCommandBuilder类是如何构建T-Sql语句
    模拟在内存中的数据库DataSet相关的类
  • 原文地址:https://www.cnblogs.com/lt47/p/5886540.html
Copyright © 2011-2022 走看看