Russian Qt Forum
Октябрь 01, 2024, 18:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не вызывается деструктор  (Прочитано 3694 раз)
Edynchik
Гость
« : Июль 05, 2013, 13:10 »

Добрый день. Создал форму mainwindow и дочернее окно dialog, при закрытии dialog по крестику, не вызывается деструктор dialog. Dialog создается в как глобальная переменная, т.е. в mainwindow.h QDialog *dialog; а в кнопке по которой вызывается происходит dialog = new QDialog(this);dialog->show();. Я так понимаю по крестику объект dialog не уничтожается, а уничтожается только по закрытии всей программы. Скажите как можно исправить? Спасибо
Записан
VPS
Гость
« Ответ #1 : Июль 05, 2013, 13:17 »

можно так попробовать:
Код:
dialog->setAttribute(Qt::WA_DeleteOnClose, true);

Или руками удалять
« Последнее редактирование: Июль 05, 2013, 13:29 от vps » Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #2 : Июль 05, 2013, 13:21 »

создавай диалог локально.
Код
C++ (Qt)
void MainWindow::askUser()
{
   MyDialog d;
 
   if(d.exec())
   {
       // чегото делаем
    }
}
 
Записан
Edynchik
Гость
« Ответ #3 : Июль 05, 2013, 13:22 »

Спасибо, но сигнала close() или типа того не нашел.
Записан
Edynchik
Гость
« Ответ #4 : Июль 05, 2013, 13:28 »

создавай диалог локально.
Код
C++ (Qt)
void MainWindow::askUser()
{
   MyDialog d;
 
   if(d.exec())
   {
       // чегото делаем
    }
}
 
интересный способ, а это все процессы не повесит?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #5 : Июль 05, 2013, 13:33 »

интересный способ, а это все процессы не повесит?
http://qt-project.org/doc/qt-5.1/qtwidgets/qdialog.html#exec
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Июль 05, 2013, 16:04 »

>>Спасибо, но сигнала close() или типа того не нашел.
В документации смотри все сигналы, в том числе унаследованные:
1 signal inherited from QWidget
2 signals inherited from QObject

А вообще для дилогов правильнее использовать их родные сигналы
rejected() - отмена (тот же крестик на окне даёт такой сигнал)
accepted() - принято (пользователь принял/подтвердил какое-то действо)
finished(int result) - универсальный
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.166 секунд. Запросов: 23.