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. String into Slider Value (amatour here)
Forum Updated to NodeBB v4.3 + New Features

String into Slider Value (amatour here)

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
5 Posts 2 Posters 1.1k Views
  • 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.
  • A Offline
    A Offline
    Alvery
    wrote on last edited by
    #1

    Hey guys,

    not sure I posted on the right place but got this problem. Maybe some of you know how to do this:)

    I am getting a value into ValueMain (from other sources) in the .cpp file.

    setTextLabel1(ValueMain);
    

    This value need to be assigned to QString for output. (in the same .cpp file)

    void Controlview::SetPageID(QString pageID)
    {
        m_pageID = pageID;
    }
    
    QString Controlview::GetPageID()
    {
        return m_pageID;
    }
    
    QString Controlview::textLabel1()const
    {
        return m_textlabel1;
    }
    
    void Controlview::setTextLabel1(const QString &textLabel1)
    {
        m_textlabel1 = textLabel1;
    }
    

    I would like to use this valueMain not just to output the value on text but to make the slider / progressBar to "act" in the main.qml file:

    import QtQuick 2.0
    
    Rectangle {
        width: 480
        height: 272
        z: -15
        color:"#060C10";
        border.width: 1;
        border.color: "#000000";
    
        Controlview {
            id: view
    
            onPageID:
            {
                text1.text = textLabel1;
            }
        }
    
        Rectangle {
            id: pageid
            width: 480
            height: 270
            color: "#060C10"
    
            property color color1: "#25333D"
            property color color2: "#00C70E" 
            property color color3: "#25333D"
            property color color4: "black" 
            property color color5: "black" 
            property color color6: "#00AC0C" 
    
            //-------------------- Slider Start --------------------
    
            Rectangle {
                x: 35
                y: 50
                width: 320
                height: 15
                border.color: "black"
                border.width: 0
    
                radius: 6
                gradient: Gradient {
                    GradientStop { position: 0.0; color: "#767E84" }
                    GradientStop { position: 1.0; color: "#767E84" }
                }
    
                Item {
                    id: slider
                    width: 266
                    height: 15
    
                    property real value: //Would love to have the ValueMain here (maybe converted from textLabel1 to an Integer or anything like that.
                    property real maximum: 100
                    property real minimum: 1
                    property int xMax: width - handle.width; onXMaxChanged: updatePos(); onminimumChanged: updatePos();
    
                    function updatePos() {
                        if (maximum > minimum) {
                            var pos = (value - minimum) * slider.xMax / (maximum -minimum);
                            pos = Math.min(pos, width - handle.width);
                            pos = Math.max(pos, 0);
                            handle.x = 250 - pos;
                        } else {
                            handle.x = 2;
                        }
                    }
    
                    Rectangle {
                        anchors.fill: parent
                        border.color: "black"
                        border.width: 0
                        radius: 6               
                        }
                    }
    
                    Rectangle {
                        id: handle
                        smooth: true
                        border.color: "black"
                        border.width: 0
                        width: 16
                        height: slider.height
                        radius: 6                  
    
                        Rectangle {
                            id: handle1
                            smooth: true
                            x: 0
                            y: -47
                            border.color: "black"
                            border.width: 0
                            width: 60
                            height: 45
                            radius: 6
    
                            Rectangle {
                                x: 45
                                y: 0
                                width: 77
                                height: 15
                                opacity: 1
                                border.color: "black"
                                border.width: 0
                                radius: 6
                            }
    
                            Text {
                                id: text1 // here I am getting the value as numbers, works perfect.
                                color: pageid.color4
                                font.bold: true
                                font.pixelSize: 28
                                anchors.verticalCenter: parent.verticalCenter
                                anchors.top: handle1.bottom
                                anchors.topMargin: - 29
                                anchors.horizontalCenter: parent.horizontalCenter
                            }
    
                            Text {
                                text: "Bar"
                                color: pageid.color5
                                font.pixelSize: 10
                                anchors.verticalCenter: parent.verticalCenter
                                anchors.top: handle1.bottom
                                anchors.topMargin: - 43
                                anchors.right:handle1.right
                                anchors.rightMargin: - 40
                            }
                        }
                    }
    
                    Rectangle {
                        id: info
                        smooth: true
                        x: 312
                        y: -30
                        border.color: "black"
                        border.width: 0
                        width: 60
                        height: 45
                        radius: 6
    
                    Text {
                        id: text2 
                        color: pageid.color4
                        font.bold: true
                        font.pixelSize: 28
                        anchors.verticalCenter: parent.verticalCenter
                        anchors.top: info.bottom
                        anchors.topMargin: - 46
                        anchors.horizontalCenter: parent.horizontalCenter
                    }
    
                    Text {
                        text: "Cm"
                        color: pageid.color5
                        font.pixelSize: 10
                        anchors.verticalCenter: parent.verticalCenter
                        anchors.top: info.bottom
                        anchors.topMargin: - 13
                        anchors.right: info.right
                        anchors.rightMargin: 6
                    }
                }
            }
    
                Rectangle {
                    x: 120
                    y: 15
                    width: 210
                    height: 15
                    radius: 6
                    gradient: Gradient {
                        GradientStop { position: 0.0; color: pageid.color1 }
                        GradientStop { position: 1.0; color: pageid.color1 }
                    }
                }
    
            }
    

    Hopefully you understand what I would like to do. I am sorry about the messy explonation and code. I am an absolute begginer.

    Thank you for your help and have a great day:)

    /Alv

    YashpalY 1 Reply Last reply
    0
    • A Alvery

      Hey guys,

      not sure I posted on the right place but got this problem. Maybe some of you know how to do this:)

      I am getting a value into ValueMain (from other sources) in the .cpp file.

      setTextLabel1(ValueMain);
      

      This value need to be assigned to QString for output. (in the same .cpp file)

      void Controlview::SetPageID(QString pageID)
      {
          m_pageID = pageID;
      }
      
      QString Controlview::GetPageID()
      {
          return m_pageID;
      }
      
      QString Controlview::textLabel1()const
      {
          return m_textlabel1;
      }
      
      void Controlview::setTextLabel1(const QString &textLabel1)
      {
          m_textlabel1 = textLabel1;
      }
      

      I would like to use this valueMain not just to output the value on text but to make the slider / progressBar to "act" in the main.qml file:

      import QtQuick 2.0
      
      Rectangle {
          width: 480
          height: 272
          z: -15
          color:"#060C10";
          border.width: 1;
          border.color: "#000000";
      
          Controlview {
              id: view
      
              onPageID:
              {
                  text1.text = textLabel1;
              }
          }
      
          Rectangle {
              id: pageid
              width: 480
              height: 270
              color: "#060C10"
      
              property color color1: "#25333D"
              property color color2: "#00C70E" 
              property color color3: "#25333D"
              property color color4: "black" 
              property color color5: "black" 
              property color color6: "#00AC0C" 
      
              //-------------------- Slider Start --------------------
      
              Rectangle {
                  x: 35
                  y: 50
                  width: 320
                  height: 15
                  border.color: "black"
                  border.width: 0
      
                  radius: 6
                  gradient: Gradient {
                      GradientStop { position: 0.0; color: "#767E84" }
                      GradientStop { position: 1.0; color: "#767E84" }
                  }
      
                  Item {
                      id: slider
                      width: 266
                      height: 15
      
                      property real value: //Would love to have the ValueMain here (maybe converted from textLabel1 to an Integer or anything like that.
                      property real maximum: 100
                      property real minimum: 1
                      property int xMax: width - handle.width; onXMaxChanged: updatePos(); onminimumChanged: updatePos();
      
                      function updatePos() {
                          if (maximum > minimum) {
                              var pos = (value - minimum) * slider.xMax / (maximum -minimum);
                              pos = Math.min(pos, width - handle.width);
                              pos = Math.max(pos, 0);
                              handle.x = 250 - pos;
                          } else {
                              handle.x = 2;
                          }
                      }
      
                      Rectangle {
                          anchors.fill: parent
                          border.color: "black"
                          border.width: 0
                          radius: 6               
                          }
                      }
      
                      Rectangle {
                          id: handle
                          smooth: true
                          border.color: "black"
                          border.width: 0
                          width: 16
                          height: slider.height
                          radius: 6                  
      
                          Rectangle {
                              id: handle1
                              smooth: true
                              x: 0
                              y: -47
                              border.color: "black"
                              border.width: 0
                              width: 60
                              height: 45
                              radius: 6
      
                              Rectangle {
                                  x: 45
                                  y: 0
                                  width: 77
                                  height: 15
                                  opacity: 1
                                  border.color: "black"
                                  border.width: 0
                                  radius: 6
                              }
      
                              Text {
                                  id: text1 // here I am getting the value as numbers, works perfect.
                                  color: pageid.color4
                                  font.bold: true
                                  font.pixelSize: 28
                                  anchors.verticalCenter: parent.verticalCenter
                                  anchors.top: handle1.bottom
                                  anchors.topMargin: - 29
                                  anchors.horizontalCenter: parent.horizontalCenter
                              }
      
                              Text {
                                  text: "Bar"
                                  color: pageid.color5
                                  font.pixelSize: 10
                                  anchors.verticalCenter: parent.verticalCenter
                                  anchors.top: handle1.bottom
                                  anchors.topMargin: - 43
                                  anchors.right:handle1.right
                                  anchors.rightMargin: - 40
                              }
                          }
                      }
      
                      Rectangle {
                          id: info
                          smooth: true
                          x: 312
                          y: -30
                          border.color: "black"
                          border.width: 0
                          width: 60
                          height: 45
                          radius: 6
      
                      Text {
                          id: text2 
                          color: pageid.color4
                          font.bold: true
                          font.pixelSize: 28
                          anchors.verticalCenter: parent.verticalCenter
                          anchors.top: info.bottom
                          anchors.topMargin: - 46
                          anchors.horizontalCenter: parent.horizontalCenter
                      }
      
                      Text {
                          text: "Cm"
                          color: pageid.color5
                          font.pixelSize: 10
                          anchors.verticalCenter: parent.verticalCenter
                          anchors.top: info.bottom
                          anchors.topMargin: - 13
                          anchors.right: info.right
                          anchors.rightMargin: 6
                      }
                  }
              }
      
                  Rectangle {
                      x: 120
                      y: 15
                      width: 210
                      height: 15
                      radius: 6
                      gradient: Gradient {
                          GradientStop { position: 0.0; color: pageid.color1 }
                          GradientStop { position: 1.0; color: pageid.color1 }
                      }
                  }
      
              }
      

      Hopefully you understand what I would like to do. I am sorry about the messy explonation and code. I am an absolute begginer.

      Thank you for your help and have a great day:)

      /Alv

      YashpalY Offline
      YashpalY Offline
      Yashpal
      wrote on last edited by
      #2

      @Alvery You can directly assign

      property real value: textLabel1
      

      if textLabel1 has real value as QString

      1 Reply Last reply
      1
      • A Offline
        A Offline
        Alvery
        wrote on last edited by Alvery
        #3

        @Yashpal said in String into Slider Value (amatour here):

        property real value: textLabel1

        Thank you for your fast replay:)

        I have tried it, got this message:

        ReferenceError: textLabel1 is not defined
        

        Not sure why:(

        YashpalY 1 Reply Last reply
        0
        • A Alvery

          @Yashpal said in String into Slider Value (amatour here):

          property real value: textLabel1

          Thank you for your fast replay:)

          I have tried it, got this message:

          ReferenceError: textLabel1 is not defined
          

          Not sure why:(

          YashpalY Offline
          YashpalY Offline
          Yashpal
          wrote on last edited by
          #4

          @Alvery You missed to reference textLabel1 by parent id 'view'

          1 Reply Last reply
          1
          • A Offline
            A Offline
            Alvery
            wrote on last edited by Alvery
            #5

            Thank you again Yashpal:)

            I did the following in the slider:

            property real value: view.textLabel1
            

            I am not getting any error message but unfortunately my Slider wont move. If I set a constant value like 80 instead of view.textLabel1, it would move instantly.

            What am I doing worng?

            I am sorry about my amatour questions. It would mean a lot if we could find a solution.

            Thank you again for your time!

            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