很顯然,樓主不是困惑的這里的代碼,而是困惑QT里面用的delete太少了。
QT里面使用了QObject來管理子對象。形成了所謂的對象樹。只要是QObject的子類,就可以指定一個(gè)parent對象,當(dāng)這個(gè)parent銷毀的時(shí)候,可以自動(dòng)銷毀子對象。所以你在使用QT的時(shí)候幾乎很少使用手動(dòng)delete。因?yàn)橹恍枰芾韕arent對象就行了。QT中的例子一般是這樣的。(改一下你的代碼)
int main(int argc, char *argv[]){
QApplication a(argc, argv);
QWidget wid;
QLabel *label = new QLabel(&wid);
wid.show();
a.exec();
return 0;}
因?yàn)閣id是label的parent,當(dāng)程序退出的時(shí)候wid銷毀時(shí),會調(diào)用label的析構(gòu)函數(shù)的,所以達(dá)到了析構(gòu)label的目的。
------解決方案--------------------我之前也一直糾結(jié)于這個(gè)問題,后來總結(jié)了一下,或許有點(diǎn)幫助http://blog.csdn.net/envenler/article/details/8020064