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. [SOLVED] Regarding Slider and Canvas
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] Regarding Slider and Canvas

Scheduled Pinned Locked Moved Solved QML and Qt Quick
17 Posts 2 Posters 4.3k 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.
  • p3c0P p3c0

    Hi @Pradeep-Kumar.M,
    Do you mean inside the onPaint or that of Canvas item itself ?

    Pradeep KumarP Offline
    Pradeep KumarP Offline
    Pradeep Kumar
    wrote on last edited by
    #4

    @p3c0
    inside canvas i made use of onpaint

    Pradeep Kumar
    Qt,QML Developer

    p3c0P 1 Reply Last reply
    0
    • Pradeep KumarP Pradeep Kumar

      @p3c0
      inside canvas i made use of onpaint

      p3c0P Offline
      p3c0P Offline
      p3c0
      Moderators
      wrote on last edited by
      #5

      @Pradeep-Kumar.M Can you post some code for better understanding ?

      157

      Pradeep KumarP 1 Reply Last reply
      0
      • p3c0P p3c0

        @Pradeep-Kumar.M Can you post some code for better understanding ?

        Pradeep KumarP Offline
        Pradeep KumarP Offline
        Pradeep Kumar
        wrote on last edited by p3c0
        #6

        @p3c0

        import QtQuick 2.4
        import QtQuick.Controls 1.3
        import QtQuick.Controls.Styles 1.1
        import QtQuick.Window 2.0
        
        Window{
            id: win
            visible: true
            width: 420
            height: 320
            Rectangle{
                id: rect
                width: 420
                height: 320
                Slider{
                    id: slide
                    width: 50
                    height: 215
                    maximumValue: 1.0
                    orientation: Qt.Vertical
                    anchors.left: rect.left
                    anchors.leftMargin: 50
                    anchors.top: rect.top
                    anchors.topMargin: 50
                    onValueChanged:
                    {
                        progress.value = value;
                        canvas.y--
                    }
        
                }
                Rectangle{
                    id: rect2
                    width: 100
                    height: 210
                    color: "gray"
                    anchors.left: slide.right
                    anchors.leftMargin: 50
                    anchors.top: rect.top
                    anchors.topMargin: 50
                    ProgressBar{
                        id: progress
                        width: 10
                        height: 215
                        orientation: Qt.Vertical
                        style: ProgressBarStyle{
                            background: Rectangle{
                                radius: 25
                                color: "lightgray"
                                border.color: "gray"
                                border.width: 1
                                implicitWidth: 200
                                implicitHeight: 24
                                anchors.left: progress.right
                                anchors.leftMargin: 20
                            }
                            progress: Rectangle{
                                color: "red"
                                radius: 25
                                border.color: "steelblue"
                                anchors.top: progress.bottom
                                anchors.leftMargin: 20
                            }
                        }
                    }
                }
                Rectangle{
                    id: rect3
                    width: 12
                    height: 12
                    radius: 18
                    color: "red"
                    border.color: "black"
                    anchors.top: rect2.bottom
                    anchors.left: slide.right
                    anchors.leftMargin: 49
                }
        
        
        
            }
            Canvas
            {
                id:canvas
                width:420
                height:320
                property color strokeStyle:  Qt.darker(fillStyle, 1.4)
                property color fillStyle: "#bdbdbd"
                property bool fill: true
                property bool stroke: true
                property real alpha:0.5
                onFillChanged:requestPaint();
                onStrokeChanged:requestPaint();
                onScaleChanged:requestPaint();
        
                onPaint: {
                    linewidth: 0.0
                    var ctx = canvas.getContext('2d');
                    var originX = 0
                    var originY = 0
                    ctx.save();
                    ctx.globalAlpha = canvas.alpha;
                    ctx.strokeStyle = canvas.strokeStyle;
                    ctx.fillStyle = canvas.fillStyle;
                    ctx.lineWidth = canvas.lineWidth;
        
        
                    ctx.moveTo(120,230);
                    ctx.lineTo(120,230);
                    ctx.lineTo(140,230);
                    ctx.lineTo(150,255);
                    ctx.lineTo(140,275);
                    ctx.lineTo(120,275);
                    ctx.lineTo(120,250);
        
                    ctx.closePath();
                    if (canvas.fill)
                        ctx.fill();
                    if (canvas.stroke)
                        ctx.stroke();
                    ctx.restore();
                }
        
            }
            Item
            {
                focus: true
                Keys.onUpPressed:
                {
                    slide.value += 0.01
                    canvas.y--
                }
                Keys.onDownPressed:
                {
                    canvas.y+=1;
                    slide.value -= 0.01;
        
                }
            }
        }
        

        canvas is moving upwards with respect to slider,

        canvas is not moving downwards with respect to slider.

        Pradeep Kumar
        Qt,QML Developer

        p3c0P 1 Reply Last reply
        0
        • Pradeep KumarP Pradeep Kumar

          @p3c0

          import QtQuick 2.4
          import QtQuick.Controls 1.3
          import QtQuick.Controls.Styles 1.1
          import QtQuick.Window 2.0
          
          Window{
              id: win
              visible: true
              width: 420
              height: 320
              Rectangle{
                  id: rect
                  width: 420
                  height: 320
                  Slider{
                      id: slide
                      width: 50
                      height: 215
                      maximumValue: 1.0
                      orientation: Qt.Vertical
                      anchors.left: rect.left
                      anchors.leftMargin: 50
                      anchors.top: rect.top
                      anchors.topMargin: 50
                      onValueChanged:
                      {
                          progress.value = value;
                          canvas.y--
                      }
          
                  }
                  Rectangle{
                      id: rect2
                      width: 100
                      height: 210
                      color: "gray"
                      anchors.left: slide.right
                      anchors.leftMargin: 50
                      anchors.top: rect.top
                      anchors.topMargin: 50
                      ProgressBar{
                          id: progress
                          width: 10
                          height: 215
                          orientation: Qt.Vertical
                          style: ProgressBarStyle{
                              background: Rectangle{
                                  radius: 25
                                  color: "lightgray"
                                  border.color: "gray"
                                  border.width: 1
                                  implicitWidth: 200
                                  implicitHeight: 24
                                  anchors.left: progress.right
                                  anchors.leftMargin: 20
                              }
                              progress: Rectangle{
                                  color: "red"
                                  radius: 25
                                  border.color: "steelblue"
                                  anchors.top: progress.bottom
                                  anchors.leftMargin: 20
                              }
                          }
                      }
                  }
                  Rectangle{
                      id: rect3
                      width: 12
                      height: 12
                      radius: 18
                      color: "red"
                      border.color: "black"
                      anchors.top: rect2.bottom
                      anchors.left: slide.right
                      anchors.leftMargin: 49
                  }
          
          
          
              }
              Canvas
              {
                  id:canvas
                  width:420
                  height:320
                  property color strokeStyle:  Qt.darker(fillStyle, 1.4)
                  property color fillStyle: "#bdbdbd"
                  property bool fill: true
                  property bool stroke: true
                  property real alpha:0.5
                  onFillChanged:requestPaint();
                  onStrokeChanged:requestPaint();
                  onScaleChanged:requestPaint();
          
                  onPaint: {
                      linewidth: 0.0
                      var ctx = canvas.getContext('2d');
                      var originX = 0
                      var originY = 0
                      ctx.save();
                      ctx.globalAlpha = canvas.alpha;
                      ctx.strokeStyle = canvas.strokeStyle;
                      ctx.fillStyle = canvas.fillStyle;
                      ctx.lineWidth = canvas.lineWidth;
          
          
                      ctx.moveTo(120,230);
                      ctx.lineTo(120,230);
                      ctx.lineTo(140,230);
                      ctx.lineTo(150,255);
                      ctx.lineTo(140,275);
                      ctx.lineTo(120,275);
                      ctx.lineTo(120,250);
          
                      ctx.closePath();
                      if (canvas.fill)
                          ctx.fill();
                      if (canvas.stroke)
                          ctx.stroke();
                      ctx.restore();
                  }
          
              }
              Item
              {
                  focus: true
                  Keys.onUpPressed:
                  {
                      slide.value += 0.01
                      canvas.y--
                  }
                  Keys.onDownPressed:
                  {
                      canvas.y+=1;
                      slide.value -= 0.01;
          
                  }
              }
          }
          

          canvas is moving upwards with respect to slider,

          canvas is not moving downwards with respect to slider.

          p3c0P Offline
          p3c0P Offline
          p3c0
          Moderators
          wrote on last edited by
          #7

          @Pradeep-Kumar.M

          onValueChanged:
          {
              progress.value = value;
              canvas.y--
          }
          

          You are always reducing the y value regardless of Slider's value. So it will always move in one direction i.e upwards.

          157

          Pradeep KumarP 1 Reply Last reply
          1
          • p3c0P p3c0

            @Pradeep-Kumar.M

            onValueChanged:
            {
                progress.value = value;
                canvas.y--
            }
            

            You are always reducing the y value regardless of Slider's value. So it will always move in one direction i.e upwards.

            Pradeep KumarP Offline
            Pradeep KumarP Offline
            Pradeep Kumar
            wrote on last edited by
            #8

            @p3c0

            what do i do if i want to move upwards as well as downwards,
            with respect to slider value

            Pradeep Kumar
            Qt,QML Developer

            p3c0P 1 Reply Last reply
            0
            • Pradeep KumarP Pradeep Kumar

              @p3c0

              what do i do if i want to move upwards as well as downwards,
              with respect to slider value

              p3c0P Offline
              p3c0P Offline
              p3c0
              Moderators
              wrote on last edited by
              #9

              @Pradeep-Kumar.M
              Same as how you update the progress bar. Bind the value. But you will need to deduce a formula which will move it precisely. For eg:

              onValueChanged:
              {
                  progress.value = value;
                  canvas.y = -value*160 //replace with your own formula
              }
              

              just to demonstrate how it works.

              157

              1 Reply Last reply
              1
              • Pradeep KumarP Pradeep Kumar

                @p3c0
                hello.
                inside onpaint, i made use of it {onpaint}.

                Pradeep KumarP Offline
                Pradeep KumarP Offline
                Pradeep Kumar
                wrote on last edited by
                #10

                @pc30
                hello one more question
                can we add our own user defined attached properties to the existing QML Items.

                Pradeep Kumar
                Qt,QML Developer

                1 Reply Last reply
                0
                • Pradeep KumarP Offline
                  Pradeep KumarP Offline
                  Pradeep Kumar
                  wrote on last edited by
                  #11

                  @pc30

                  thank you so much, its working fine,
                  and by the way your good name please,
                  and i hope i'l practise much more interesting stuff,
                  problem is solved.

                  will you answer my second question please which i have posted.

                  Pradeep Kumar
                  Qt,QML Developer

                  p3c0P 1 Reply Last reply
                  0
                  • Pradeep KumarP Pradeep Kumar

                    @pc30

                    thank you so much, its working fine,
                    and by the way your good name please,
                    and i hope i'l practise much more interesting stuff,
                    problem is solved.

                    will you answer my second question please which i have posted.

                    p3c0P Offline
                    p3c0P Offline
                    p3c0
                    Moderators
                    wrote on last edited by
                    #12

                    @Pradeep-Kumar.M By "existing QML Items" you mean the inbuilt QML items or your own custom defined items ?

                    157

                    Pradeep KumarP 1 Reply Last reply
                    1
                    • p3c0P p3c0

                      @Pradeep-Kumar.M By "existing QML Items" you mean the inbuilt QML items or your own custom defined items ?

                      Pradeep KumarP Offline
                      Pradeep KumarP Offline
                      Pradeep Kumar
                      wrote on last edited by
                      #13

                      @p3c0
                      our own user defined items.

                      Pradeep Kumar
                      Qt,QML Developer

                      p3c0P 1 Reply Last reply
                      0
                      • Pradeep KumarP Pradeep Kumar

                        @p3c0
                        our own user defined items.

                        p3c0P Offline
                        p3c0P Offline
                        p3c0
                        Moderators
                        wrote on last edited by p3c0
                        #14

                        @Pradeep-Kumar.M I think yes. But I haven't used as such. Check out the following attached-properties for some information regarding it. Example here.

                        157

                        Pradeep KumarP 2 Replies Last reply
                        1
                        • p3c0P p3c0

                          @Pradeep-Kumar.M I think yes. But I haven't used as such. Check out the following attached-properties for some information regarding it. Example here.

                          Pradeep KumarP Offline
                          Pradeep KumarP Offline
                          Pradeep Kumar
                          wrote on last edited by
                          #15

                          @p3c0
                          thank you

                          Pradeep Kumar
                          Qt,QML Developer

                          1 Reply Last reply
                          0
                          • p3c0P p3c0

                            @Pradeep-Kumar.M I think yes. But I haven't used as such. Check out the following attached-properties for some information regarding it. Example here.

                            Pradeep KumarP Offline
                            Pradeep KumarP Offline
                            Pradeep Kumar
                            wrote on last edited by
                            #16

                            @p3c0

                            hello.
                            i got with respect to mouse implementaion,
                            can i have implementation of canvas with slider value with key up pressed, and key down pressed?. can you suggest.

                            Pradeep Kumar
                            Qt,QML Developer

                            p3c0P 1 Reply Last reply
                            0
                            • Pradeep KumarP Pradeep Kumar

                              @p3c0

                              hello.
                              i got with respect to mouse implementaion,
                              can i have implementation of canvas with slider value with key up pressed, and key down pressed?. can you suggest.

                              p3c0P Offline
                              p3c0P Offline
                              p3c0
                              Moderators
                              wrote on last edited by
                              #17

                              @Pradeep-Kumar.M As it doesn't return anything, you will need to keep a counting variable which will be increased and decreased on key up and down pressed (you will need to decide how much to increase or decrease at a time). Then assign this count (with some multiplier) value to y in similar way we did with slider.

                              157

                              1 Reply Last reply
                              1

                              • Login

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