• 7073阅读
  • 6回复

用迴圈產生的new,怎麼用delete全消除 [复制链接]

上一主题 下一主题
离线mattatlantis
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-08
例如我用迴圈產生三個物件:
for(int i=1;i<=3;==i)
{
QLabel *a = new QLabel(this);
a->setText("123");
a->move(100*i,0);

}
這樣會有三個lebel出現
但是我用delete a 卻只會刪除掉第一個,其他的不能刪除。
請問我要怎麼樣才能3個全刪除勒?
离线qindq

只看该作者 1楼 发表于: 2009-07-08
晕啊
如果出了循环,你还能删除一个,C++要被你重新定义标准了
离线orin_chen
只看该作者 2楼 发表于: 2009-07-08
QLabel *a = new QLabel(this);
你已经指定 QLable 的parent = this 了,就可以不用手工删除了,Qt 会在帮你管理的
离线foxyz

只看该作者 3楼 发表于: 2009-07-08
我综合以上两位的回复:
1.你指定了parent为this,那么你new出来的widgets会automaticly erased!不用你在delete by hand
2. 你如果想自己删除,你的code应该这么写:
QVector<QLabel*> labelList;
for(int i=1;i<=3;++i)
{
QLabel *a = new QLabel(this);
a->setText("123");
a->move(100*i,0);
labelList<<a;
}

你要人工删除就qDeleteAll(labelList);
离线mattatlantis

只看该作者 4楼 发表于: 2009-07-08
感謝樓上,我用樓上的方法解決囉~
离线ifantasy
只看该作者 5楼 发表于: 2011-10-21
楼上真是无处不在啊
离线XChinux

只看该作者 6楼 发表于: 2011-10-22
引用第5楼ifantasy于2011-10-21 15:50发表的  :
楼上真是无处不在啊

那垃圾信息已删除,欢迎大家多举报。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个