БС
12 февраля 2019 г. 1:12

Qt/QML/Android(navigation button)

Можно обрабатывать back кнопку так как работает кнопка home? Если можно то как?? Это нужно обрабатываться через JNI? Буду благодарен за любую помощь.

2

Вам это нравится? Поделитесь в социальных сетях!

3
Evgenii Legotckoi
  • 12 февраля 2019 г. 12:40
  • Ответ был помечен как решение.

Нет, JNI тут не потребуется, по моему мнению.

Ну вот один возможный вариант

  1. Rectangle {
  2. focus: true // important - otherwise we'll get no key events
  3.  
  4. Keys.onReleased: {
  5. if (event.key == Qt.Key_Back) {
  6. console.log("Back button captured - wunderbar !")
  7. event.accepted = true
  8. }
  9. }
  10. }

вот второй

  1. ApplicationWindow
  2. {
  3. onClosing: {
  4. close.accepted = false
  5. if (contextMenuManager.menuVisible)
  6. contextMenuManager.menuVisible = false
  7. }
  8. }

и третий

  1. import QtQuick 2.3
  2. import QtQuick.Controls 1.2
  3. import QtQuick.Layouts 1.1
  4.  
  5. ApplicationWindow {
  6. id: appWindow
  7. visible: true
  8. width: 640
  9. height: 480
  10. title: qsTr("Hello World")
  11.  
  12. ListModel {
  13. id: longModel
  14.  
  15. Component.onCompleted: {
  16. for ( var i=1; i<=100; i++ )
  17. append({"testName": i})
  18. }
  19. }
  20.  
  21.  
  22. ListView {
  23. anchors.fill: parent
  24. id: listView
  25. model: longModel
  26.  
  27. delegate:
  28. Rectangle {
  29. height: 80
  30. width: parent.width
  31.  
  32. Text {
  33. id: textComponent
  34. text: testName
  35. }
  36. Keys.onReleased: {
  37. if (event.matches(StandardKey.Back)) {
  38. console.log("back caught by delegate");
  39. event.accepted = true;
  40. }
  41. }
  42. }
  43.  
  44. focus: true
  45. Keys.onReleased: {
  46. if (event.matches(StandardKey.Back)) {
  47. console.log("back caught by listview");
  48. event.accepted = true;
  49. }
  50. }
  51.  
  52. }
  53. }
    БС
    • 12 февраля 2019 г. 16:04

    Когда мы пишем event.accepted = true это значит шо твоя application на закрывается а дальше работает на foreground, но мой вопрос в другом можно чтоб кнопка назад не убивала application, а сделала minimize??

      Evgenii Legotckoi
      • 12 февраля 2019 г. 16:10
      • (ред.)

      но мой вопрос в другом можно чтоб кнопка назад не убивала application, а сделала minimize??

      Вам следовало бы сразу соответствующим образом сформулировать вопрос. Разработчики приложения в итоге решают, как поступать и дефолтное поведение может быть переопределено. Есть приложения в которых вообще происходит logout клиента и ничего больше.

      Думаю, что тут уже нужно копать в сторону JNI, с фоновой работой всё обстоит несколько сложнее. Требуются настройки AndroidManifest. Здесь не подскажу.

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь