Название: Не вызывается деструктор Отправлено: Edynchik от Июль 05, 2013, 13:10 Добрый день. Создал форму mainwindow и дочернее окно dialog, при закрытии dialog по крестику, не вызывается деструктор dialog. Dialog создается в как глобальная переменная, т.е. в mainwindow.h QDialog *dialog; а в кнопке по которой вызывается происходит dialog = new QDialog(this);dialog->show();. Я так понимаю по крестику объект dialog не уничтожается, а уничтожается только по закрытии всей программы. Скажите как можно исправить? Спасибо
Название: Re: Не вызывается деструктор Отправлено: VPS от Июль 05, 2013, 13:17 можно так попробовать:
Код: dialog->setAttribute(Qt::WA_DeleteOnClose, true); Или руками удалять Название: Re: Не вызывается деструктор Отправлено: alex312 от Июль 05, 2013, 13:21 создавай диалог локально.
Код
Название: Re: Не вызывается деструктор Отправлено: Edynchik от Июль 05, 2013, 13:22 Спасибо, но сигнала close() или типа того не нашел.
Название: Re: Не вызывается деструктор Отправлено: Edynchik от Июль 05, 2013, 13:28 создавай диалог локально. интересный способ, а это все процессы не повесит?Код
Название: Re: Не вызывается деструктор Отправлено: alex312 от Июль 05, 2013, 13:33 интересный способ, а это все процессы не повесит? http://qt-project.org/doc/qt-5.1/qtwidgets/qdialog.html#execНазвание: Re: Не вызывается деструктор Отправлено: lit-uriy от Июль 05, 2013, 16:04 >>Спасибо, но сигнала close() или типа того не нашел.
В документации смотри все сигналы, в том числе унаследованные: 1 signal inherited from QWidget 2 signals inherited from QObject А вообще для дилогов правильнее использовать их родные сигналы rejected() - отмена (тот же крестик на окне даёт такой сигнал) accepted() - принято (пользователь принял/подтвердил какое-то действо) finished(int result) - универсальный |