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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигналы  (Прочитано 6042 раз)
vanix
Гость
« : Февраль 16, 2011, 18:41 »

Какой сигнал отправляет виджет при закрытие?
К примеру, при закрытии виджета закрыть полностью приложение
Код:
QApplication a(argc, argv);
QWidget mainWidget;
QObject::connect(&mainWidget, SIGNAL(destroyed()),&a,SLOT(quit()));
Вышеприведенный пример нерабочий, что не правильно?
Записан
shirushizo
Гость
« Ответ #1 : Февраль 16, 2011, 19:20 »

При закрытии выполняется closeEvent, который можно переопределить.
Чтобы программа выходила при закрытии всех окон используй:
Код:
void QApplication::setQuitOnLastWindowClosed(bool quit)
void QApplication::lastWindowClosed ()   [signal]
Можно методом
Код:
void QWidget::setAttribute ( Qt::WidgetAttribute attribute, bool on = true )
установить атрибут Qt::WA_DeleteOnClose и тогда сигнал destroyed скорее всего будет высылаться при закрытии.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Февраль 16, 2011, 19:34 »

Сигнал destroyed вызовется только после уничтожения объекта. Улыбающийся А когда ты закрываешь окно, этот сигнал не испускается.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vanix
Гость
« Ответ #3 : Февраль 16, 2011, 20:22 »

с использованием Qt::WA_DeleteOnClose завершается работа приложения аварийно(но работает)) ),
а вот по поводу переопределения closeEvent, я так понимаю, необходимо создать класс, пронаследовать его от QWidget и изменить ему обработчик метода closeEvent?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Февраль 16, 2011, 21:25 »

Сделай setQuitOnLastWindowClosed (true) и не парься.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vanix
Гость
« Ответ #5 : Февраль 17, 2011, 04:11 »

Спасибо всем.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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