下面是代码:
class MyWidget: public QWidget
{
public:
MyWidget();
~MyWidget();
private:
QHBoxLayout* theLayout;
QVBoxLayout* subLayout1;
QVBoxLayout* subLayout2;
//More subLayouts
}
MyWidget::MyWidget()
{
theLayout = new QHBoxLayout();
subLayout1 = new QVBoxLayout();
subLayout2 = new QVBoxLayout();
//More subLayouts
//-------- Fill subLayouts with widgets using addWidget --------
theLayout->addLayout(subLayout1);
theLayout->addLayout(subLayout2);
//add all subLayouts
setLayout(theLayout);
}
MyWidget::~MyWidget()
{
//Destructor with nothing in it
}**注:版面为班级成员。
因此,我知道在subLayouts中填充的小部件现在是MyWidget的子部件(或者至少我认为如果不是,请告诉我),所以我不需要在析构函数中删除它们(Qt清理它们了吗?),但是布局是否也是MyWidget的子类,还是需要在析构函数中删除这些呢?
发布于 2015-07-15 17:19:56
正如文献资料所说,setLayout调用将重新父级给定的布局。因此,这个小部件将是它的父部件,所以您不需要手动删除它。
我认为,如果可能的话,应该在参数中使用构造函数。而且,如果只是初始化布局,则不需要将布局作为成员存储。
https://stackoverflow.com/questions/31436113
复制相似问题