1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
|
|
1 | |
Вызов деструктора07.04.2014, 11:17. Показов 4924. Ответов 9
Метки нет (Все метки)
Всем привет. Столкнулся с такой аномалией.
Есть виджет. Есть деструктор. В деструкторе код. При закрытии приложения - код деструктора не выполняется. Запихнул в код вызов QMessageBox: сообщение выходит + выполняется код деструктора. Убрал QMessageBox: код деструктора снова не работает. Собственно, вопрос: почему деструктор так себя ведет, и какие еще есть варианты выполнения кода из виджета при закрытии приложения? P.S. пробовал пользоваться флагом DeleteOnClose, но это приводит к падению программы из-за сигналов. Связок сигналов и слотов очень много, поэтому дисконнектить их все в деструкторе - не очень хорошая идея.
0
|
07.04.2014, 11:17 | |
Ответы с готовыми решениями:
9
SIGABRT при вызове деструктора не вызывается слот при сигнале с деструктора Ui->playListView->isVisible() работает не правильно при вызове из деструктора Вызов деструктора |
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
|
||||||
07.04.2014, 11:36 [ТС] | 3 | |||||
0
|
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
|
|
07.04.2014, 11:37 | 4 |
0
|
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
|
|
07.04.2014, 11:40 [ТС] | 5 |
Если убрать gWarningMessage() то fSaveColumnWidth не выполняется.
Добавлено через 3 минуты Суть в том, что я хочу чтобы настройки ширины столбцов в таблице сохранялись между запусками программы. Поэтому написал функцию сохранения/загрузки настроек. Загрузку поместил в конструктор, а сохранение - в деструктор. Вот только сохранение в деструкторе не выполняется. Решил проверить, запускается ли он вообще. Запихнул в него QMessageBox. Сообщение выскакивает... и сохранение работает... Убрал QMessageBox - снова перестало сохранять...
0
|
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
|
|
07.04.2014, 11:55 | 6 |
Вообще, как мне кажется, сохранение настроек нужно вставлять не деструктор, а в closeEvent виджета.
Таким образом настройки будут сохраняться при каждом закрытии виджета, а не только при его уничтожении.
0
|
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
|
|
07.04.2014, 12:15 [ТС] | 7 |
Пробовал и с CloseEvent, но оно не возникает при закрытии программы. Проверял с помощью QMessageBox().
0
|
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
|
|
07.04.2014, 12:28 | 8 |
Мне даже интересно глянуть на ваш closeEvent. Он возникает всегда, если все правильно написано
0
|
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
|
||||||
07.04.2014, 12:46 [ТС] | 9 | |||||
Добавлено через 3 минуты Все. Я сам разобрался. Добавляю обработчик в главное окно, а потом вызываю из него fSaveColumnWidth для всех соответствующих дочерних виджетов.
0
|
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
|
|
07.04.2014, 15:32 | 10 |
Для классов-наследников не от QWidget не подойдет.
Сохранение настроек в деструкторе - нормальная практика.
0
|
07.04.2014, 15:32 | |
07.04.2014, 15:32 | |
Помогаю со студенческими работами здесь
10
Вызов деструктора Вызов деструктора Вызов деструктора Вызов деструктора Повторный вызов деструктора Не понятный вызов деструктора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |