Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qtkoder777 от Август 19, 2015, 17:06



Название: Надо ли удалять QDialog после exec (Qt 4.4 - 4.8)
Отправлено: qtkoder777 от Август 19, 2015, 17:06
Создал виджет-наследник QDialog, после exec удалил:
Код
C++ (Qt)
QDialog* w = new QMyDialog;
w->exec();
...
delete w;
Программа падает на delete.
Явно не выставлял
Код
C++ (Qt)
setAttribute(Qt::WA_DeleteOnClose);
Долго баг себя не проявлял, и вдруг начала падать.
Дело в ненужном удалении или проблему надо искать в другом месте?
Надо ли удалять виджет или он сам удаляется?


Название: Re: Надо ли удалять QDialog после exec (Qt 4.4 - 4.8)
Отправлено: kambala от Август 19, 2015, 17:28
создавай на стеке или удаляй через w->deleteLater()


Название: Re: Надо ли удалять QDialog после exec (Qt 4.4 - 4.8)
Отправлено: Igors от Август 20, 2015, 10:22
Явно не выставлял
Код
C++ (Qt)
setAttribute(Qt::WA_DeleteOnClose);
Так выставьте явно чтобы не гадать


Название: Re: Надо ли удалять QDialog после exec (Qt 4.4 - 4.8)
Отправлено: GreatSnake от Август 20, 2015, 10:40
Явно не выставлял
Код
C++ (Qt)
setAttribute(Qt::WA_DeleteOnClose);
Коли явно не выставлял, то Qt удалять не будет.
Ищи проблемы в другом.


Название: Re: Надо ли удалять QDialog после exec (Qt 4.4 - 4.8)
Отправлено: Fregloin от Август 25, 2015, 10:15
делай через стек, ничего падать не будет. сам на такое напарывался по началу...