只是一个关于父母与子女关系的快速问题。我一直在阅读教程,但我似乎无法找到任何教程或阅读材料来证明"这个"关键字。
这是我的代码:
window::window(){
bar = new QProgressBar;
button = new QPushButton;
bar->setTextVisible(false);
button->setText("IRON LOADER"); //widget
QGridLayout * GL = new QGridLayout(); //layout
GL->addWidget(bar);
GL->addWidget(button);
QGroupBox * gb = new QGroupBox("Group",this); //widget
//second box
QTextEdit * tester = new QTextEdit(); //widget
tester->setFixedHeight(100);
QVBoxLayout * ly = new QVBoxLayout(); //layout
ly->addWidget(tester);
QWidget * widge = new QWidget(this); //widget
//final
widge->setLayout(ly); //first widget group
gb->setLayout(GL); //second widget group
//main wrapper
QGridLayout * test = new QGridLayout;
test->addWidget(widge,0,1);
test->addWidget(gb,0,0);
//set up
QWidget * central = new QWidget;
central->setLayout(test);
setCentralWidget(central); //set central
}
我的程序很简单:
它由3个文件组成,即:window.h
,main.cpp
和window.cpp
从windows.cpp
开始,我继承了QMainWindow
,然后我实施了2组小部件:
左边的一个由QPushButton
和QProgressBar
组成。
正确的有一个QTextEdit
。
我的代码编译并按预期工作。
令我困惑的一件事是:我什么时候应该放this
?没有将this
关键字放在其中一些上(因为删除父项与关闭程序时相同)是不是很好?
我读到qt上的父/子关系是关于删除和内存管理。
答案 0 :(得分:2)
如果程序泄漏但终止,则OS将回收其内存(OS跟踪执行的内存分配)。无论如何,为了它而泄漏内存并不是一个好习惯,因为你的程序可能会被其他人扩展或使用与以前预期的不同。
关于Qt widgets tutorial explains this
与QObjects一样,可以使用父对象创建QWidgets以指示所有权,确保在不再使用对象时删除对象。使用小部件,这些父子关系具有另外的含义:每个子小部件显示在其父小部件占用的屏幕区域内。这意味着当您删除窗口窗口小部件时,它所包含的所有子窗口小部件也将被删除。
回答你的问题:在内存管理和显示正确性方面,这都是在小部件之间设置父子关系的好方法。