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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Действия при закритии потока.  (Прочитано 5679 раз)
FreTFuL
Гость
« : Август 20, 2010, 22:53 »

Когда закривається главное окно приложения понятное дело закриваються все потоки. У меня в потоке идет отправка почти. Мне нужно чтоби в момент когда поток собирается закриться виполнилась моя функция по сохранению данних. что мне делать? Подскажите пожалуста какую функцию нужно перезагрузить или какие сигнали использовать.
Записан
merke
Гость
« Ответ #1 : Август 21, 2010, 06:37 »

В заголовочном файле:

protected:
    virtual void closeEvent(QCloseEvent *e);

В файле исходников:

void TextEdit::closeEvent(QCloseEvent *e)
{
    if (maybeSave())//Вызываем функцию например: сохранения файла
        e->accept();
    else
        e->ignore();
}
Записан
FreTFuL
Гость
« Ответ #2 : Август 21, 2010, 08:45 »

Функция сохранения находится не в том отоке что гравное окно и когда я перед закритиєм висилаю сигнал сохранится ничего не получається поток просто закривається
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Август 21, 2010, 10:37 »

void QApplication::lastWindowClosed ()   [signal]
Записан
FreTFuL
Гость
« Ответ #4 : Август 21, 2010, 11:53 »

и оно обработает соединенний сигнал а на закроет тот поток?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Август 21, 2010, 12:28 »

ты можешь поставить чтоб QApplication не выходил при закрытии окна, сам подписаться на этот сигнал, послать сигналы потокам на выключение, подождать их и только после этого вырубить приложение.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Август 21, 2010, 12:41 »

Нет способа это сделать без участия самой нитки (отправка почты). Она должна напр периодически проверять флажок и если он установлен, то прекратить отправку, записать данные и выйти из run. Когда главная нитка получит closeEvent, она должна установить этот флажок и подождать пока отправка сделает свои дела

Код
C++ (Qt)
mailThread.mStopFlag = true;
mailThread.wait();
 

P.S. Пожалуйста решите проблему с буквой Ы, а то Ваши посты трудно читать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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