Qt — обработка Android back button

      Комментарии к записи Qt — обработка Android back button отключены

Помечено: , , ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 9 мес., 3 нед. назад.

  • Автор
    Сообщения
  • #3177

    На телефонах есть специальная кнопка для возврата назад. В браузерах она обычно возвращает вас на предыдущую страницу, в некоторых программах просмотра изображений — не предыдущее изображение, но а в многих играх — на предыдущий игровой экран. В предыдущей заметке я описал удобный класс для управления экранами (окнами) в приложении, было бы здорово, если бы он умел обрабатывать Back button.

    При нажатии на эту кнопку вырабатывается событие клавиатуры с кодом кнопки, равным Qt::Key_Back, поэтому для обработки нужно перегрузить виртуальный метод keyPressEvent(QKeyEvent *event):

    void ScreenController::keyPressEvent(QKeyEvent *event) {
        if (event->key() == Qt::Key_Back) {
            if (lenght() > 1)
                pop();
            else
                this->close();
        }
    
        event->accept();
    }

    В данном случае я использую стек виджетов (описанный по ссылке выше) и при возникновении события от этой кнопки выполняю функцию pop(), которая приводит к возврату на предыдущий экран. Естественно, если предыдущего экрана нет (проверяется с помощью lenght()), то возвращаться некуда, значит пользователь хочет завершить приложение (по крайней мере, браузеры ведут себя так).

Для ответа в этой теме необходимо авторизоваться.