代码:
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
}
**注意:布局是类的成员。
所以我知道,在子布局填充的小部件现在是MyWidget的孩子(或者至少这是我认为如果不请告诉我),所以我不需要在解构器中删除它们(Qt清理它们正确吗?),但布局也是MyWidget的孩子还是我需要在解构器中删除这些?
正如文档所说,setLayout
调用将表示给定的布局。因此,这个小部件将是它的父部件,因此您不需要手动删除它。
我认为如果可能的话,应该使用带实参的构造函数。而且你不需要将布局存储为成员如果你只是初始化它们