В Qt:
- Когда
QObject
уничтожены, они уничтожают своих детей.
- Когда QWidget закрыт, он не удаляется, кроме случаев, когда установлен атрибут
Qt::WA_DeleteOnClose
.
QWidget - это QObject, поэтому он также соответствует первому пункту, так что QWidget является потомком другого QWidget, есть как минимум 3 возможности:
- Вы передаете родительский QWidget в конструктор.
- Вы используете метод
setParent()
.
- И когда вы устанавливаете его с помощью макета, поскольку ваш родитель будет виджетом, для которого был создан макет.
В случае передачи lbl
и msgComboBox
в макет, это будут потомки установленного QWidget
, так как я не знаю .ui не мог сказать, кто его родитель, но я Можно сказать, что есть связь родства с окном.
Таким образом, когда окно будет уничтожено, ваши дети также будут уничтожены, и эти дети уничтожат своих детей, поэтому lbl и msgComboBox будут уничтожены, поэтому вам нужно только setAttribute(Qt::WA_DeleteOnClose)
, чтобы lbl, msgComboBox и тот же Orderdialog были удаляется при закрытии окна.