Страницы

Поиск по вопросам

понедельник, 22 апреля 2019 г.

Как правильно закрыть окно Qt?

Есть многооконное приложение. Виджеты иногда меняют родителей и переходят из одного окна в другое. Возникает необходимость закрывать окна с остатками виджетов. Например, было два окна, в каждом по два QLabel. Из одного окна в другое перешел QLabel. Окно с оставшимся в нем одним QLabel больше не нужно и его можно полностью удалить со всеми виджетами в нем. Как теперь правильно удалить это окно, чтобы не было утечек памяти и других неприятных вещей? Или память освобождается автоматически?


Ответ

Для каждого окна установите атрибут:
setAttribute(Qt::WA_DeleteOnClose);
Этот атрибут делает следующее:
Makes Qt delete this widget when the widget has accepted the close event (see QWidget::closeEvent()).
Другими словами, когда окно получает QCloseEvent, оно самоуничтожается

Комментариев нет:

Отправить комментарий