• 2850阅读
  • 3回复

[提问]有关QT一个内存管理的问题 [复制链接]

上一主题 下一主题
离线zmx_zmx_zmx
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-25
加入我新建了一个继承自QWidget的类,其中private里面有QVBoxlayout *layout,在构造函数里面我layout =new QVBoxlayout的话,这样这个layout的父亲是不是这个自己创建的widget,当类销毁的时候会不会一并销毁这个layout?如果我layout = new QVBoxlayout(this)又如何?如果我这个layout不是类的成员,在类的构造函数里面创建又如何?
离线jdwx

只看该作者 1楼 发表于: 2013-03-25
回 楼主(zmx_zmx_zmx) 的帖子
layout =new QVBoxlayout 这个布局没有parent
layout = new QVBoxlayout(this) 这个布局的parent是this(widget)
如果一个布局以后不需要修改(addWidget什么的),直接写:
QVBoxlayout *layout = new QVBoxlayout ;
布局也有控件类似的父子结构,最外层布局的parent是窗口。

发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线zmx_zmx_zmx
只看该作者 2楼 发表于: 2013-03-26
回 1楼(jdwx) 的帖子
QVBoxlayout *layout = new QVBoxlayout ;这样在QT析构函数里面会销毁这个layout么?应该不会吧。没有指定父亲,QT就不会帮你销毁吧。
而成员函数的layout的父亲就一定是该类么?
离线jdwx

只看该作者 3楼 发表于: 2013-03-26
回 2楼(zmx_zmx_zmx) 的帖子
QVBoxlayout *layout = new QVBoxlayout ;这么写不会被自动销毁。
使用一个布局,自然会将布局放到一个widget里(没有放进widget里的布局是没有效果的),widget被销毁的时候,布局也就一起被销毁了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个