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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Модальное окно и закрытие приложения  (Прочитано 7249 раз)
jjoss
Гость
« : Январь 12, 2010, 15:57 »

Народ, подскажите, пожалуйста, как грамотно сделать следующее.
При запуске приложения открывается форма авторизации. На ней кроме всего прочего две кнопки "ОК" и "Отмена". При нажатии "Ок", приложение работает дальше, открывается главная форма. А при нажатии "Отмена" закрывается всё приложение.
Делаю так. Проверяю, что возвращает exec() модального окна. Если QDialog::Accepted, то всё нормально, а вот если QDialog::Rejected, то не могу закрыть приложение, используя QApplication::quit(), всё равно открывается главная форма...
Записан
jjoss
Гость
« Ответ #1 : Январь 12, 2010, 16:02 »

В принципе срабатывает так
Код:
main(...)
{
     QApplication app(...);
     MainWindow mainWindow;
     AuthDialog dlg;
     if ( dlg.exec() == QDialog::Rejected)
         return 0;
 
     //Главное окно
 
     return app.exec();
}

Но мучает вопрос - будет ли корректно освобождена память?
Записан
Dendy
Гость
« Ответ #2 : Январь 12, 2010, 16:04 »

Будет.
Записан
jjoss
Гость
« Ответ #3 : Январь 12, 2010, 16:09 »

Будет.

Спасибо! Тогда вопрос закрыт.
Записан
Marat(Qt)
Гость
« Ответ #4 : Январь 12, 2010, 16:17 »

Я использую команду exit(0); срабатывает везде. Память освобождает ОС, так что все чисто.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Январь 12, 2010, 16:50 »

только деструкторы не вызываются, ага
Записан
Dendy
Гость
« Ответ #6 : Январь 12, 2010, 17:02 »

exit(0) - никогда так не делайте, если нет крайней необходимости.
Записан
SABROG
Гость
« Ответ #7 : Январь 12, 2010, 17:02 »

только деструкторы не вызываются, ага

Иногда мне кажется а может оно к лучшему, если посмотреть на FireFox, то эта падла долго выходить не хочет...
Записан
Marat(Qt)
Гость
« Ответ #8 : Январь 12, 2010, 17:10 »

exit(0) - никогда так не делайте, если нет крайней необходимости.
Знать бы почему
Записан
DS_tm
Гость
« Ответ #9 : Январь 13, 2010, 02:45 »

exit(0) - никогда так не делайте, если нет крайней необходимости.
Знать бы почему

А почему вы компьютер не выключаете, выдернув кабель из сети?)
Записан
Marat(Qt)
Гость
« Ответ #10 : Январь 13, 2010, 04:00 »

exit(0) - никогда так не делайте, если нет крайней необходимости.
Знать бы почему

А почему вы компьютер не выключаете, выдернув кабель из сети?)
Неплохое сравнение. Причину пожалуйста. Ваше сравнение ничего не дает
Записан
ilot
Гость
« Ответ #11 : Январь 13, 2010, 04:37 »

только деструкторы не вызываются, ага
А зачем их вызывать, если работа приложения полностью завершается? никаких утечек ресурсов не возникает, выделенная приложению память должна полностью освобождаться. Если логика приложения допускает такое завершение, то не вижу причин избегать его использование... Другое дело, что само наличие такого завершения выглядит странно и наводит на мысль, что архитектура плохо продумана.

А почему вы компьютер не выключаете, выдернув кабель из сети?)
А вот это как раз нарушает логику, заложенную в программы.
« Последнее редактирование: Январь 13, 2010, 04:41 от ilot » Записан
DS_tm
Гость
« Ответ #12 : Январь 13, 2010, 13:12 »

А почему вы компьютер не выключаете, выдернув кабель из сети?)
Неплохое сравнение. Причину пожалуйста. Ваше сравнение ничего не дает

Согласен, сравнение не очень. Имелось ввиду, что данный способ по моему слегка радикальный, а не то, что он приведет к утечкам памяти. Вообще полностью согласен с ilot, данное решение просто выглядет странно, а работает корректно.
Записан
MoPDoBoPoT
Гость
« Ответ #13 : Январь 13, 2010, 14:26 »

А как насчет того, что некоторые объекты что-то делают в своих деструкторах, например, сохраняют настройки?
Записан
DS_tm
Гость
« Ответ #14 : Январь 13, 2010, 16:09 »

А как насчет того, что некоторые объекты что-то делают в своих деструкторах, например, сохраняют настройки?

Тоже верно, еще деструкторы могут закрывать дескрипторы рессурсов, вообщем, как уже было сказано, лучше не использовать!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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