Qt顶层窗口为什么创建在栈不是堆?

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的对象树使用析构函数会替我们自己完成。

发布了123 篇原创文章 · 获赞 133 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_33879812/article/details/102841532
今日推荐