crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> При закрытии главного окна приложение не завершается
ilya
  опции профиля:
сообщение 18.4.2012, 10:11
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 18.4.2012
Пользователь №: 3330

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет.

По какой-то причине закрытие главного окна, унаследованного от QWidget, не приводит к завершению приложения. Причём не помогают завершить программу ни close(), ни destroy(), ни QApplication::exit(). close(), например, возвращает true, окно закрывается, но код внутри этого окна продолжает выполняться. Кто-нибудь сталкивался с такой проблемой?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Snake174
  опции профиля:
сообщение 18.4.2012, 12:25
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 18.4.2011
Из: Миасс
Пользователь №: 2613

Спасибо сказали: 9 раз(а)




Репутация:   0  


А чем тебе такое не нравится? Сделай функцию Start() типа bool и в ней, если не удалось запустить, вывести ошибку.
bool Recorder::Start()
{
  // пытаемся запустить
  if (запустили)
  {
    ......

    return true;
  }

  // вывод ошибки
  .....

  return false;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilya
  опции профиля:
сообщение 18.4.2012, 12:45
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 18.4.2012
Пользователь №: 3330

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Snake174 @ 18.4.2012, 13:25) *
А чем тебе такое не нравится? Сделай функцию Start() типа bool и в ней, если не удалось запустить, вывести ошибку.


Дело в том, что класс Recorder - это мост между графическим интерфейсом и остальной, достаточно большой, частью программы, вся обработка ошибок в которой построена на исключениях. Хорошим тоном при разработке архитектуры программного продукта считается выработка единой стратегии обработки ошибок, поэтому применение исключений в классе Recorder не обсуждается. Вообще, мысль в корне правильная - при возникновении исключения в конструкторе деструктор класса не вызывается, что может привести к утечке ресурсов, и, возможно, как раз к тому, что программа перестанет правильно завершаться. Но все ресурсы в этом коде используются через смартпойнтеры, поэтому утечки ресурсов тут априори не может быть, и дело скорее всего не в этом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.1.2025, 0:49