Qt的程序主程序都都会这么一段代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DialogLocal w;
w.show();
return a.exec();
}
不管这个w实例是dialog或者Widgrt,都会在堆上创建,而不是new出来,这是为啥?
原因:main的串口是顶层窗口,应用程序会形成以此为根基的对象树,顶层窗口关闭后,如果没有销毁,而是隐藏了,那么在退出的时候没有手动销毁的话,其延伸出来的任何部件都不会释放。所以,在顶层窗口上创建的部件,只 需要制定其parent的参数为this,也就是widget为父窗口就不需要进行delete操作,Qt的对象树使用析构函数会替我们自己完成。