Qt QApplication :: commitData, завершение работы Windows, запутанная документация - PullRequest
1 голос
/ 13 февраля 2012

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

Существует также связанный saveState. Название функции означает примерно то же самое, и документация также очень похожа.

Как я должен правильно определить, когда система выключается, и сохранить свое состояние и закрыть приложение? commitData действительно правильный путь и просто страдает от очень плохого имени и плохой документации?

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

В моей практике обнаружения отключения приложения я обычно подключаюсь к слоту void QCoreApplication::aboutToQuit ().Как сказано в документе:

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

Пока все хорошо, у меня все получилось нормально

0 голосов
/ 26 декабря 2013

commitData () и saveState () могут показаться избыточными.

Но документация говорит

Кроме того, большинство администраторов сеансов, скорее всего, будут запрашивать сохраненное состояние сразу после запуска приложения. Это позволяет менеджеру сеанса узнать о политике перезапуска приложения.

Может быть, это объясняет, почему понятия «данные» и «состояние» разделены. Во время этого первоначального вызова было бы неудобно взаимодействовать с пользователем.

Ответ по умолчанию на завершение работы приложения выглядит как хороший дизайн, потому что, если вы не переопределите его, тогда самым безопасным будет закрыть приложение (как если бы пользователь выбрал действие Quit), что также должно сохранить данные пользователя.

ОС закрывается или только сеанс? Что касается вашего приложения, то это только сеанс (поскольку технически пользователь может выйти из системы, а ОС продолжает работать.) И пользователь может считать, что приложение не «закрыто», а просто «приостановлено». с сохранением данных. '

Также рассмотрим мобильные платформы, такие как iOS, где приложение работает вечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...