什么时候把这个"这个" Widget父构造函数的关键字?

时间:2015-08-05 07:03:15

标签: c++ qt

只是一个关于父母与子女关系的快速问题。我一直在阅读教程,但我似乎无法找到任何教程或阅读材料来证明"这个"关键字。

这是我的代码:

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.hmain.cppwindow.cpp

windows.cpp开始,我继承了QMainWindow,然后我实施了2组小部件:

左边的一个由QPushButtonQProgressBar组成。 正确的有一个QTextEdit

我的代码编译并按预期工作。

令我困惑的一件事是:我什么时候应该放this?没有将this关键字放在其中一些上(因为删除父项与关闭程序时相同)是不是很好?

我读到qt上的父/子关系是关于删除和内存管理。

1 个答案:

答案 0 :(得分:2)

如果程序泄漏但终止,则OS将回收其内存(OS跟踪执行的内存分配)。无论如何,为了它而泄漏内存并不是一个好习惯,因为你的程序可能会被其他人扩展或使用与以前预期的不同。

关于Qt widgets tutorial explains this

的预期用途
  

与QObjects一样,可以使用父对象创建QWidgets以指示所有权,确保在不再使用对象时删除对象。使用小部件,这些父子关系具有另外的含义:每个子小部件显示在其父小部件占用的屏幕区域内。这意味着当您删除窗口窗口小部件时,它所包含的所有子窗口小部件也将被删除。

回答你的问题:在内存管理和显示正确性方面,这都是在小部件之间设置父子关系的好方法。