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. Send press event to mouseArea from a parent QML
Forum Updated to NodeBB v4.3 + New Features

Send press event to mouseArea from a parent QML

Scheduled Pinned Locked Moved Solved QML and Qt Quick
12 Posts 2 Posters 3.4k Views 1 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.
  • D Offline
    D Offline
    DavidM29
    wrote on last edited by
    #3

    @J-Hilk
    In fact I found the solution to correct the error message I got. But I'm still not capable to press the button by pressing the Arrow.

    the only thing I need now is to find a way to send press event to the mouse area.

    I tried to change the "pressed" property of the mouse area but it is read only. And the pressed() function is not working without a MouseEvent.

    J.HilkJ 1 Reply Last reply
    0
    • D DavidM29

      @J-Hilk
      In fact I found the solution to correct the error message I got. But I'm still not capable to press the button by pressing the Arrow.

      the only thing I need now is to find a way to send press event to the mouse area.

      I tried to change the "pressed" property of the mouse area but it is read only. And the pressed() function is not working without a MouseEvent.

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #4

      @DavidM29
      well, A MouseArea needs a MouseEvent to function. I don't know how one would emulate that.

      Why don't you defined your own signal in the root element of your customButton. Than chain the onPressed event from the mouse area to that signal. Also you should have no problem calling your own signal programatically.


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      1
      • D Offline
        D Offline
        DavidM29
        wrote on last edited by
        #5

        @J-Hilk
        How do you chain the onPressed event ?

        J.HilkJ 1 Reply Last reply
        0
        • D DavidM29

          @J-Hilk
          How do you chain the onPressed event ?

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #6

          @DavidM29 something like this

          Item {
              id:root
              signal pressed()
          
              MouseArea{
                 anchors.fill: parent
                 onPressed: root.pressed()
              }
          
          
          }
          

          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          1 Reply Last reply
          1
          • D Offline
            D Offline
            DavidM29
            wrote on last edited by
            #7

            I'm not sure to understand what this code do :

            Does it call the onPressed event of the mouse area when the root.pressed() signal is emitted or does it emit the root.pressed() signal when I press the mouse area ?

            I'm not sure to understand.

            J.HilkJ 1 Reply Last reply
            0
            • D DavidM29

              I'm not sure to understand what this code do :

              Does it call the onPressed event of the mouse area when the root.pressed() signal is emitted or does it emit the root.pressed() signal when I press the mouse area ?

              I'm not sure to understand.

              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by
              #8

              @DavidM29 said in Send press event to mouseArea from a parent QML:

              I'm not sure to understand what this code do :

              Does it call the onPressed event of the mouse area when the root.pressed() signal is emitted or does it emit the root.pressed() signal when I press the mouse area ?

              I'm not sure to understand.

              MouseArea pressed signal triggers the root item pressed signal

              Item {
                  id:root
                  signal pressed()
              
                  onPressed: console.log("root pressed signal");
              
                  MouseArea{
                     anchors.fill: parent
                     onPressed: {
                         console.log("MouseArea pressed signal");
                         root.pressed()
                     }
                  }
              }
              

              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              D 1 Reply Last reply
              1
              • J.HilkJ J.Hilk

                @DavidM29 said in Send press event to mouseArea from a parent QML:

                I'm not sure to understand what this code do :

                Does it call the onPressed event of the mouse area when the root.pressed() signal is emitted or does it emit the root.pressed() signal when I press the mouse area ?

                I'm not sure to understand.

                MouseArea pressed signal triggers the root item pressed signal

                Item {
                    id:root
                    signal pressed()
                
                    onPressed: console.log("root pressed signal");
                
                    MouseArea{
                       anchors.fill: parent
                       onPressed: {
                           console.log("MouseArea pressed signal");
                           root.pressed()
                       }
                    }
                }
                
                D Offline
                D Offline
                DavidM29
                wrote on last edited by
                #9

                @J.Hilk
                That is what I thought.

                So your idea is to use this root.pressed signal to implement the function I would have implement on the mouse area.
                I get it now.

                Thank you it is a good idea.

                1 Reply Last reply
                0
                • D Offline
                  D Offline
                  DavidM29
                  wrote on last edited by
                  #10

                  @J-Hilk
                  Do you have any idea how could I keep the color change on press of my button ? I tried to add a bool property that I change to true once I emit the root.pressed signal but I don't know how to change it back to false once I release the button.

                  J.HilkJ 1 Reply Last reply
                  0
                  • D DavidM29

                    @J-Hilk
                    Do you have any idea how could I keep the color change on press of my button ? I tried to add a bool property that I change to true once I emit the root.pressed signal but I don't know how to change it back to false once I release the button.

                    J.HilkJ Offline
                    J.HilkJ Offline
                    J.Hilk
                    Moderators
                    wrote on last edited by
                    #11

                    @DavidM29 , ähm, MouseArea has a onReleased: signal you could use ?


                    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                    Q: What's that?
                    A: It's blue light.
                    Q: What does it do?
                    A: It turns blue.

                    D 1 Reply Last reply
                    1
                    • J.HilkJ J.Hilk

                      @DavidM29 , ähm, MouseArea has a onReleased: signal you could use ?

                      D Offline
                      D Offline
                      DavidM29
                      wrote on last edited by
                      #12

                      @J.Hilk
                      I used the Key.onReleased() event and the MouseArea onReleased event and now it seems to be all good. Thank you !

                      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