Russian Qt Forum

Qt => Общие вопросы => Тема начата: Swa от Февраль 16, 2016, 15:00



Название: Вопрос про QDialog и event loop
Отправлено: Swa от Февраль 16, 2016, 15:00
Всем привет.
Ситуация такая, в приложении открывается документ и юзер может открывать разные диалоговые окна для настройки каких-либо параметров документа. Окна - наследники QDialog с кнопками Сохранить\Отмена.
При этом в главном окне есть таймер, по таймауту вызывается слот и  внутри этого слота текущий документ может быть закрыт. Если открыто диалоговое окно, то при сохранении параметров мы обратимся по нулевому указателю. Я знаю, что это происходит потому, что QDialog имеет свой event loop и продолжает обрабатывать события приложения.
Кто что посоветует, как можно решить эту проблему?


Название: Re: Вопрос про QDialog и event loop
Отправлено: Igors от Февраль 16, 2016, 15:33
Завести QPointer<QDialog> и при таймауте решать - то ли закрыть и документ и диалог, то ли ничего не закрывать, пусть юзер решит в диалоге.


Название: Re: Вопрос про QDialog и event loop
Отправлено: Racheengel от Февраль 16, 2016, 18:39
Просто перед "закрытием" документа насильно закрыть открытые для него диалоги.


Название: Re: Вопрос про QDialog и event loop
Отправлено: Swa от Февраль 17, 2016, 12:41
Спасибо за ответы всем, сделал пока вот так:
Код:
QList<QDialog*> allDialogs = this->findChildren<QDialog*>();
foreach(QDialog* dialog, allDialogs) {
dialog->reject();
}
Буду тестировать.