Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. QML Key Event Problem

QML Key Event Problem

Scheduled Pinned Locked Moved Solved QML and Qt Quick
3 Posts 2 Posters 2.0k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AlienA Offline
    AlienA Offline
    Alien
    wrote on last edited by
    #1

    Hello,

    I've implemented small application with two event handling on keyboard keys to capture press and release event I don't know why press and release event com after each other while I hold the press?

    import QtQuick 2.10
    import QtQuick.Window 2.10
    
    Window {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
    
    
        Item {
    
            focus: true
            Keys.onPressed: {
                if (event.key == Qt.Key_Left)
                {
                    console.log("move left pressed");
                    event.accepted = true;
                }
            }
            Keys.onReleased: {
    
                if (event.key == Qt.Key_Left)
                {
                    console.log("move left released");
                    event.accepted = true;
                }
            }
        }
    }
    
    

    While I press left arrow the output is:

    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    qml: move left pressed
    qml: move left released
    

    Best regards,
    Alien

    DiracsbracketD 1 Reply Last reply
    1
    • AlienA Alien

      Hello,

      I've implemented small application with two event handling on keyboard keys to capture press and release event I don't know why press and release event com after each other while I hold the press?

      import QtQuick 2.10
      import QtQuick.Window 2.10
      
      Window {
          visible: true
          width: 640
          height: 480
          title: qsTr("Hello World")
      
      
          Item {
      
              focus: true
              Keys.onPressed: {
                  if (event.key == Qt.Key_Left)
                  {
                      console.log("move left pressed");
                      event.accepted = true;
                  }
              }
              Keys.onReleased: {
      
                  if (event.key == Qt.Key_Left)
                  {
                      console.log("move left released");
                      event.accepted = true;
                  }
              }
          }
      }
      
      

      While I press left arrow the output is:

      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      qml: move left pressed
      qml: move left released
      

      Best regards,
      Alien

      DiracsbracketD Offline
      DiracsbracketD Offline
      Diracsbracket
      wrote on last edited by Diracsbracket
      #2

      @Alien
      Use the event's isAutoRepeat property to check if it's an auto-repetition:

              Keys.onPressed: {
                  if (event.key === Qt.Key_Left && !event.isAutoRepeat)
                  {
                      console.log("move left pressed");
                      event.accepted = true;
                  }
              }
              Keys.onReleased: {
      
                  if (event.key === Qt.Key_Left  && !event.isAutoRepeat)
                  {
                      console.log("move left released");
                      event.accepted = true;
                  }
              }
      
      1 Reply Last reply
      4
      • AlienA Offline
        AlienA Offline
        Alien
        wrote on last edited by Alien
        #3

        @Diracsbracket Thank you so much

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved