Виджеты Qt, особенно при их объединении, определяют иерархию.Давайте посмотрим на это визуально на (упрощенном) примере.
В моем приложении у меня есть центральный QWidget.Помимо этого есть два других виджета.QGLWidget для некоторого 3D-рендеринга и QTabWidget для элементов управления.Эти два виджета являются потомками моего центрального QWidget.
QTabWidget имеет вкладки, которые сами являются QWidget.И кажется логичным, чтобы они были детьми QTabWidget, верно?
И я могу продолжать.Возможно, на одной из вкладок есть несколько кнопок, на другой вкладка - какие-нибудь текстовые поля.
То, что вы здесь делаете, это создаете иерархию QWidgets.Так что в случае с этим примером это будет выглядеть примерно так:
QWidget (the Central Widget)
|
|-QGLWidget (my rendering window)
|-QTabWiget (the tab widget for my controls)
|
|-QWidget (the first tab)
||
||-QPushButton (a button on the first tab)
|
|-QWidget (the second tab)
|
|-QLineEdit (a widget to provide some input)
В любом случае, вы поймете мой дрейф.Возвращаясь к вашему коду, вы можете определить эту иерархию с помощью конструктора QWidget (или любого производного виджета).Если я создам свой QGLWidget, в его конструкторе я предоставлю указатель на мой центральный QWidget в качестве его родителя.
Есть несколько причин для этой иерархии.Вы упоминаете создание / удаление.Но также представьте, если вы переключаете вкладки.Какой элемент должен отображаться в верхней части вкладки?Свои дети конечно.И если вы начнете работать с Qt, вы узнаете о Layouts.Установка макета для виджета повлияет на всех дочерних элементов этого виджета.Есть несколько других причин (и все происходит за кулисами), но этого должно быть достаточно.
Мое объяснение довольно концептуально.Возможно, это не самое технически подробное и правильное объяснение, но оно должно дать вам несколько советов.
Возвращаясь к вашему примеру кода.Адресная книга является производной от QWidget.Если вы поместите его в свой графический интерфейс, вы можете поместить его поверх другого виджета.Как ее ребенок.Так что, если вы добавите эту адресную книгу, вы можете сказать ей, каков ее родитель.В этом примере он не используется.Адресная книга сама по себе является самым верхним виджетом.Но это также легко может быть частью иерархии.
Довольно много текста, но я надеюсь, что это несколько объясняет концепции.Посмотрите на некоторые примеры, которые поставляются с Qt.Вы должны получить представление о том, как все устроено.Если вы не видите, как они соединяются, нарисуйте диаграмму, как я делал выше.Это должно начать иметь смысл для вас.Если у кого-то есть исправления или более техническая информация, которая может быть полезна, не стесняйтесь комментировать или исправлять меня.
Надеюсь, это поможет.