来源:微信公众号「编程学习基地」

文章目录

  • 背景
  • 测试结果
    • 目的
    • 结果
  • 测试代码
  • 主程序测试

背景

QTableWidget需要不断刷新,但是QTableWidget里面不仅申请了QTableWidgetItem,还添加了自定义widget,不确定刷新的时候是否会delete上次申请的内存。

测试结果

目的

TableWidget内存测试,验证tableWidget在 removeRow ,clearContents 和 clean 的时候是否会释放 QTableWidgetItem 和 手动申请的小部件内存.

结果

tableWidget在 removeRow ,clearContents 和 clean 的时候会释放 QTableWidgetItem 和 手动申请的小部件内存.

测试代码

继承 QTableWidgetItem 的测试代码

class TEST:public QTableWidgetItem
{public:TEST(QString str){this->setText(str);qDebug()<<"构造TEST:"<< str <<endl;}TEST(){qDebug()<<"构造TEST"<<endl;}~TEST(){qDebug()<<"析构TEST"<<this->text()<<endl;}
};

继承 QLabel 的测试代码

class EmojiWidget : public QLabel
{public:EmojiWidget();EmojiWidget(const QString&fileName);~EmojiWidget(){if(m_movie){delete m_movie;m_movie = NULL;qDebug()<<"delete movie";}qDebug()<<"delete EmojiWidget";};
public:void setFileName(const QString&fileName);QString& getFileName();
protected:void enterEvent(QEvent *e); //鼠标进入事件void leaveEvent(QEvent *e); //鼠标离开事件bool eventFilter(QObject *watched, QEvent *event);
private:QMovie* m_movie;QString m_fileName;
};

主程序测试

 ui->tableWidget->insertRow(0);ui->tableWidget->insertRow(1);ui->tableWidget->insertColumn(0);ui->tableWidget->insertColumn(1);ui->tableWidget->setItem(0, 0, new TEST("测试1"));ui->tableWidget->setItem(0, 1, new TEST("测试2"));ui->tableWidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);EmojiWidget* lable = new EmojiWidget(QString(":/src/emoji/1.gif"));ui->tableWidget->setCellWidget(1,0,lable);//删除行的时候释放itemui->tableWidget->removeRow(0);ui->tableWidget->removeRow(0);//仅仅释放item,不删除行
//    ui->tableWidget->clear();
//    ui->tableWidget->clearContents();

效果

构造TEST: "测试1" 构造TEST: "测试2" 构造
析构TEST "测试1" 析构TEST "测试2" delete movie
delete EmojiWidget

QTableWidget关于item内存释放相关推荐

  1. openCV内存释放问题

    转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃, ...

  2. 深拷贝与浅拷贝~动态内存释放有关

    浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如: class A{ public: A(int ...

  3. linux内存系统管理,Linux内存管理之伙伴系统(内存释放)

    Linux内核伙伴系统中页面释放,主函数为free_pages() 一.上层操作 void free_pages(unsigned long addr, unsigned int order){if ...

  4. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

    文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...

  5. 【C 语言】结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )

    文章目录 一.结构体中嵌套一级指针 1.声明 结构体类型 2.为 结构体 变量分配内存 ( 分配内存时先 为结构体分配内存 然后再为指针分配内存 ) 3.释放结构体内存 ( 释放内存时先释放 指针成员 ...

  6. linux内存释放和使用限制

    1.内存释放 命令:echo 1 > /proc/sys/vm/drop_caches 解释: drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1: ...

  7. map的内存释放问题

    map.clear() 只是把map清空了,但是内存没有释放,如果要释放内存不止是要clear()掉,还要和一个空的map来进行swap,将内存释放. 注意map中如果元素不是基本类型,也要进行内存释 ...

  8. 有关内存释放的一些问题

    转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃, ...

  9. 【学习笔记】类对象的内存释放

    类对象的内存释放 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 类对象与其他数据变量一样,都是要占据程序内存的,如果确定后续程序不会再使用对象实例,我们就可以删除对 ...

最新文章

  1. 2022-2028年中国除螨仪行业市场前瞻与投资战略规划分析报告
  2. win messenger启动随outlook explorer
  3. 前端进阶之 let、const、var
  4. Java Cardioid 心脏形曲线 (整理)
  5. KlayGE中的FXAA已经完成
  6. 高德地图自定义点标记大小_Vue:如何在地图上添加自定义覆盖物(点)
  7. java动画闪烁_优化Java动画编程中的显示效果
  8. php文件上传实验总结,53 PHP文件处理(六)文件上传--总结---细说php
  9. require与include的区别
  10. 【linux】telnet ctrl+c 不退出问题解决
  11. linux配置iscsi无账号密码,linux4 如何配置iscsi启动器
  12. HTML5 CSS3编程入门经典 ((美)Rob Larsen) pdf扫描版
  13. paip.表格化CSV输出
  14. Linux: 联想小新 Air15 Linux 安装 AX210 网卡驱动
  15. MATLAB卷积运算(conv)
  16. 联想台式计算机 不启动u盘,联想电脑没有u盘启动项怎么回事_联想电脑bios没有U盘启动项如何处理-系统城...
  17. Codeforces 553A Kyoya and Colored Balls 给球涂颜色
  18. Android 清理应用缓存
  19. 小米2s Android pie,Android 9.0 Pie正式版发布,小米MIX 2S率先升级,国内第一款!
  20. 英语对于程序员重要吗?

热门文章

  1. sql server 2008主键id自增设置
  2. Cacti 监控华为5700交换机总流量
  3. 前端与移动开发-----CSS(三大特性+盒子模型原理)
  4. IOS JSBox 安装 VSCode 通过插件JSBox 同步编辑代码到iPhone
  5. 爆红的变老神器 FaceApp
  6. kodi添加局域网计算机,KODI怎么播放局域网内共享的4K电影/视频的图文教程
  7. python投掷骰子实验实验结论_博饼伤我心我,决定用Python对投骰子(色子)做数据分析...
  8. 腾讯视频html5播放,使用 iframe 引用优酷和土豆和腾讯视频,支持 HTML5 手机 播放...
  9. java拦截器和过滤器配置,逆袭面经分享
  10. hereby,thereby,wherein