QT 内存分配问题

bigblacktree3 2013-06-19 05:54:01
最近学习使用qt,在使用QTableWidget控件时,感觉好像每次需要给每一个item关联一个QTableWidgetItem对象,才可以使用,比如要写入字符串。由于我软件需要多次重复的变动QTableWidget控件的数量,那么我可能每次需要给QTableWidget的每一个item重新关联新的QTableWidgetItem,
如:ui->tableWidget->setItem(0,0,new QTableWidgetItem);
我的问题是,这样new出来的对象什么时候能释放呢?
我还做了一个实验:
for(int i=0;i<100000;i++)
{
ui->tableWidget->setItem(0,0,new QTableWidgetItem);
}
观察内存,似乎没有变化,感觉很疑惑啊,希望高手指点一下
...全文
206 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeequenLiu 2013-06-20
  • 打赏
  • 举报
回复
默认情况下,qt的GUI是一个树,它在释放时,会默认从根开始遍历自动释放。 所以你可以看到你在界面设计上拖动一个按钮,在生成的定义文件中它明明是个指针 ,但是却没有释放它。 所以对于Qt默认的Widget,只要你加入到树中,基本上不用考虑释放的问题。 但是自定义的,最好手动删除。
bigblacktree3 2013-06-20
  • 打赏
  • 举报
回复
不是这个问题,我的问题是为什么new了那么多对象,但是内存没有增加呢?qt都做了什么?
  • 打赏
  • 举报
回复
引用 2 楼 jdwx1 的回复:
如果不需要添加控件进QTableWidget,还是用QTableView的model、view更方便。
+1
jdwx 2013-06-19
  • 打赏
  • 举报
回复
如果不需要添加控件进QTableWidget,还是用QTableView的model、view更方便。
_Gx 2013-06-19
  • 打赏
  • 举报
回复
你可以先new对象再加进去 QTableWidgetItem *tableWidgetItem = new QTableWidgetItem(); 然后设置 tableWidgetItem->setAttribute(Qt::WA_DeleteOnClose); 这样关闭的时候就会释放内存了。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧