Название: Qt::DeleteOnClose для всех Отправлено: Day от Декабрь 18, 2013, 22:49 Логика моей задачи такова, что любой виджет я создаю по new, и по его закрытию он мне больше совершенно не нужен. Значит каждому надо писать
Код: setAttribute(Qt::WA_DeleteOnClose, true); Нет ли глобального способа, на уровне QApplication, заставить все виджеты удаляться при их закрытии? Название: Re: Qt::DeleteOnClose для всех Отправлено: ammaximus от Декабрь 18, 2013, 23:46 Если любому объекту QObject назначать родителя, то при удалении родителя, удалятся и потомки. Флаги эти тоже работают через родителей, так что утечки памяти не будет, по завершению все удалится в любом случае. Если тебе критично освобождать память, группируй их в категории и назначай специальному родителю, которого удалишь. Вообще, конечно, проще ничего не забывать)
Название: Re: Qt::DeleteOnClose для всех Отправлено: kambala от Декабрь 19, 2013, 00:23 можно создать наследников QWidget/QDialog, добавить туда этот атрибут в конструктор и везде в программе использовать эти унаследованные классы.
Название: Re: Qt::DeleteOnClose для всех Отправлено: Day от Декабрь 19, 2013, 11:08 ammaximus, kambala, спасибо.
Просто мне казалось, что логичнее удалять виджеты (диалоги) после их использования и закрытия. Ну что ж поделаешь! Буду стараться следить. А создавать класс из-за одного атрибута не очень хочется. Хотя, конечно, это вариант. |