Используете ли вы Qt::WA_DeleteOnClose или удаляете вручную?
Вот, к примеру, по нажатию кнопки вы вызываете диалог. Можно поставить Qt::WA_DeleteOnClose для формы диалога а можно удалить вручную. Как вы делаете? Если вручную — то когда/где?
Так же вопрос — если в конструкторе этого самого диалога создаете auto* dsEffect = new QGraphicsDropShadowEffect(this); и применяете — нужно ли удалять вручную или оно само удалится вместе с удалением диалога?
2) Для Qt есть отдельный раздел.
S>Используете ли вы Qt::WA_DeleteOnClose или удаляете вручную?
Ни то, ни другое.
S>Вот, к примеру, по нажатию кнопки вы вызываете диалог. Можно поставить Qt::WA_DeleteOnClose для формы диалога а можно удалить вручную. Как вы делаете? Если вручную — то когда/где?
S>Так же вопрос — если в конструкторе этого самого диалога создаете auto* dsEffect = new QGraphicsDropShadowEffect(this); и применяете — нужно ли удалять вручную или оно само удалится вместе с удалением диалога?
Здравствуйте, Shmj, Вы писали:
S>Используете ли вы Qt::WA_DeleteOnClose или удаляете вручную?
Зависит от задачи, обычно вручную.
S>Вот, к примеру, по нажатию кнопки вы вызываете диалог. Можно поставить Qt::WA_DeleteOnClose для формы диалога а можно удалить вручную. Как вы делаете? Если вручную — то когда/где?
Зависит от задачи, когда как. Вручную например когда после закрытия диалога нужно получить доступ к какому либо внутреннему состоянию диалога, которое не было прокинуто через signal. Разница между Qt::WA_DeleteOnClose и QScopedPtr<Dialog> скорей в организации кода, мне второй вариант больше нравится, так как в месте вызова всё видно.
S>Так же вопрос — если в конструкторе этого самого диалога создаете auto* dsEffect = new QGraphicsDropShadowEffect(this); и применяете — нужно ли удалять вручную или оно само удалится вместе с удалением диалога?
Удалится когда будет удален this, в Qt-e родители удаляют детей, ссылку на документацию уже давали.
Здравствуйте, Shmj, Вы писали:
S>Используете ли вы Qt::WA_DeleteOnClose или удаляете вручную?
S>Вот, к примеру, по нажатию кнопки вы вызываете диалог. Можно поставить Qt::WA_DeleteOnClose для формы диалога а можно удалить вручную. Как вы делаете? Если вручную — то когда/где?
Вручную, наверное, никогда. Сейчас посмотрел свой текущие проект — ни одного явного delete.
* в Qt обычно родитель удаляет.
* иногда (редко) deleteLater.
* В очень случаях редких явное RAII.
S>Так же вопрос — если в конструкторе этого самого диалога создаете auto* dsEffect = new QGraphicsDropShadowEffect(this); и применяете — нужно ли удалять вручную или оно само удалится вместе с удалением диалога?
Вопросы владения явно в документации оговорены. Обычно первый параметр это родитель, который и удалит.