Как получить события жизненного цикла мобильного приложения в QtApp - PullRequest
0 голосов
/ 11 июня 2018

Я программирую приложение в коммерческой лицензии Qt 5.9.4 .Мое приложение работает на Android и iOS.

Вопрос:
Есть ли способ в Qt обнаружить обычные события мобильного устройства , например:
- Устройстводисплей выключен
- устройство перешло в фоновый режим после нажатия пользователем кнопки «Домой» на iOS / Android
- нажатие кнопки «Назад» на Android и т. д.

Существует множество таких событий, которые каждая из платформ Android иТриггер iOS.

Если есть класс / модуль в Qt, который ретранслирует эти события назад, мне не пришлось бы выполнять дополнительную работу по написанию нативного ( java и target-c *)1020 *) классов, чтобы получить эти события внутри моего QtApp .

1 Ответ

0 голосов
/ 12 июня 2018

Большинство этих событий обрабатываются самим Qt, и вы можете получить их классическим способом.Qt пытается как можно лучше скрыть специфичные для Android вещи и доставляет эти события и т. Д. Так, как вы бы это делали в настольном приложении.

Нажатие кнопки «назад» вызывает QCloseEvent, которое отправляется в главное окно.,Вы можете установить фильтр событий на объекте из C ++, чтобы перехватить его.Для qml это сигнал Window :: closed .

Так как Qt не поддерживает фоновое выполнение действий, фоновая печать, вероятно, также сообщается как событие закрытия - или она выходит из приложения напрямую.

Для переключателя DIsplay я сейчас точно не знаю, но, возможно, сигнал QGuiApplication :: applicationStateChanged сообщает об этом как Qt::ApplicationSuspended или другой изэти штаты - просто попробуйте!(это может относиться и к другим событиям)


Краткий совет для Android: Если вы хотите, чтобы что-то не обрабатывалось Qt, вы всегда можете просто создать пользовательское действие Java, расширяющее QtActivity и используйте его в манифесте.Оттуда вы можете использовать JNI для взаимодействия с Java из C ++ и наоборот.Если вам нужно сделать это, взгляните на Qt Android Extras - они упрощают использование JNI намного и предоставляют кучу хороших классов-оболочек и служебных методов в QtAndroid Пространство имен, которое может пригодиться.

...