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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сохранение настроек при закрытии программы  (Прочитано 4723 раз)
troorl
Гость
« : Июнь 06, 2007, 15:33 »

Есть главное окно. В деструктор записываю сохранение позиции и размера этого окна. При выходе они по идее должны сохраняться (qApp->quit()). Но не сохраняются.
Но если в конце деструктора прописать что-то типа
Код:
QMessageBox::information(0, "", '');

то настройки успевают сохраниться. Как это правильно реализовать?
Записан
goer
Гость
« Ответ #1 : Июнь 06, 2007, 15:36 »

попробуй поставить qApp->processEvents() после функции сохранения, если не получится - сделай паузу при помощи QEventLoop. Кажется в теме про QString(та которая на 4 старницы, чуть ниже) было как это сделать.
Записан
troorl
Гость
« Ответ #2 : Июнь 06, 2007, 15:48 »

Спасибо, qApp->processEvents() вроде помогло.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Июнь 06, 2007, 16:40 »

Цитата: "troorl"

Как это правильно реализовать?


имхо в деструкторе сохранять настройки это не совсем корректное решение. Объект начал уже разрушаться, сосотояние объектов может быть неопределённым. Я наталкнулся на такой косяк и переделал по другому:

Код:
void MainWindow::closeEvent ( QCloseEvent * evnt )
{
    if (<запрос о закрытии приложения>) {
        <сохранение настроек>
        evnt->accept();
        return;
    }
    evnt->ignore();
}
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #4 : Июнь 06, 2007, 17:39 »

Цитата: "pastor"
Цитата: "troorl"

Как это правильно реализовать?


имхо в деструкторе сохранять настройки это не совсем корректное решение. Объект начал уже разрушаться, сосотояние объектов может быть неопределённым. Я наталкнулся на такой косяк и переделал по другому:

Код:
void MainWindow::closeEvent ( QCloseEvent * evnt )
{
    if (<запрос о закрытии приложения>) {
        <сохранение настроек>
        evnt->accept();
        return;
    }
    evnt->ignore();
}


именно так и надо, т.к. для того события в ней и созданы (сигнал-слот)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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