Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for MCUs
  4. Highlight property in Qt for MCU
Servers for Qt installer are currently down

Highlight property in Qt for MCU

Scheduled Pinned Locked Moved Unsolved Qt for MCUs
11 Posts 3 Posters 1.9k 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.
  • S Offline
    S Offline
    Sachin_Og
    wrote on 3 Jul 2020, 07:25 last edited by
    #1

    I am trying to implement ListView.
    I want to highlight the current item with a rectangular border.
    It was possible earlier using the highlight property, but this property is missing from QUL.
    Here is a code snippet:

    ListView {
            id: listView
    
            anchors.fill: root
            anchors.topMargin: 32
            anchors.bottomMargin: 20
    
            model:myModel
    
            delegate: listDelegate
    
            highlight: Item 
            {
                Rectangle {
                    anchors.centerIn: parent
                    width: parent.width + 8
                    height: parent.height + 8
                    color: "transparent"
    
                    radius: 8
                }
            }
        }
    

    When I try to build I get:
    error: Binding on property of unknown type
    highlight: Item {

    Any suggestions on how to achieve this?

    -Thanks

    J 1 Reply Last reply 3 Jul 2020, 07:38
    0
    • S Sachin_Og
      3 Jul 2020, 07:25

      I am trying to implement ListView.
      I want to highlight the current item with a rectangular border.
      It was possible earlier using the highlight property, but this property is missing from QUL.
      Here is a code snippet:

      ListView {
              id: listView
      
              anchors.fill: root
              anchors.topMargin: 32
              anchors.bottomMargin: 20
      
              model:myModel
      
              delegate: listDelegate
      
              highlight: Item 
              {
                  Rectangle {
                      anchors.centerIn: parent
                      width: parent.width + 8
                      height: parent.height + 8
                      color: "transparent"
      
                      radius: 8
                  }
              }
          }
      

      When I try to build I get:
      error: Binding on property of unknown type
      highlight: Item {

      Any suggestions on how to achieve this?

      -Thanks

      J Offline
      J Offline
      J.Hilk
      Moderators
      wrote on 3 Jul 2020, 07:38 last edited by J.Hilk 7 Mar 2020, 07:39
      #2

      @Sachin_Og inside your listDelegate you can check for being the current item and change the background color in there to reflect that, for example:

      ListView{
              id:lView
              anchors.fill: parent
      
              model: 10
      
              delegate: Rectangle{
                  width: lView.width
                  height: 20
                  property bool highlight: lView.currentIndex == index
      
                  color: highlight ? "red" : "green"
                  Text {
                      id:te
                      text: index
                      anchors.centerIn: parent
                  }
      
                  MouseArea{
                      onClicked: lView.currentIndex = index
                      anchors.fill: parent
                  }
              }
          }
      

      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
      0
      • S Offline
        S Offline
        Sachin_Og
        wrote on 3 Jul 2020, 07:49 last edited by
        #3

        Thank you @J-Hilk for the quick response.
        However I am facing an error
        error: Type lView_ListView does not have a property currentIndex for reading
        and again for writing as well.

        Is there something I missed.
        I have imported QtQuick 2.0 and QtQuick.Controls 2.0.

        -Thanks

        J 1 Reply Last reply 3 Jul 2020, 08:03
        0
        • S Sachin_Og
          3 Jul 2020, 07:49

          Thank you @J-Hilk for the quick response.
          However I am facing an error
          error: Type lView_ListView does not have a property currentIndex for reading
          and again for writing as well.

          Is there something I missed.
          I have imported QtQuick 2.0 and QtQuick.Controls 2.0.

          -Thanks

          J Offline
          J Offline
          J.Hilk
          Moderators
          wrote on 3 Jul 2020, 08:03 last edited by
          #4

          @Sachin_Og I don't have Qt for MCU, but currentIndex is available in 2.0 versions of QQuick for desktop

          Can you show your code, where this problem arises ?


          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
          0
          • S Offline
            S Offline
            Sachin_Og
            wrote on 3 Jul 2020, 08:56 last edited by
            #5

            I copy pasted your code directly to understand its behaviour.
            and the problem arises in following lines:

            property bool highlight: lView.currentIndex == index
            

            and

            onClicked: lView.currentIndex = index
            

            Also I believe there are several properties that are removed from Qt for MCU due to memory constraints.
            Qt for MCU uses only Qt ultralite library as per my understanding.
            Hence I am facing such issues otherwise a lot of Desktop solutions are available in various forums.

            -Thanks

            J 1 Reply Last reply 3 Jul 2020, 09:00
            0
            • S Sachin_Og
              3 Jul 2020, 08:56

              I copy pasted your code directly to understand its behaviour.
              and the problem arises in following lines:

              property bool highlight: lView.currentIndex == index
              

              and

              onClicked: lView.currentIndex = index
              

              Also I believe there are several properties that are removed from Qt for MCU due to memory constraints.
              Qt for MCU uses only Qt ultralite library as per my understanding.
              Hence I am facing such issues otherwise a lot of Desktop solutions are available in various forums.

              -Thanks

              J Offline
              J Offline
              J.Hilk
              Moderators
              wrote on 3 Jul 2020, 09:00 last edited by
              #6

              @Sachin_Og well, as long as index is available...

              ListView{
                      id:lView
                      anchors.fill: parent
              
                     property int currentIndex: -1
              
                      model: 10
              
                      delegate: Rectangle{
                          width: lView.width
                          height: 20
                          property bool highlight: lView.currentIndex == index
              
                          color: highlight ? "red" : "green"
                          Text {
                              id:te
                              text: index
                              anchors.centerIn: parent
                          }
              
                          MouseArea{
                              onClicked: lView.currentIndex = index
                              anchors.fill: parent
                          }
                      }
                  }
              

              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
              0
              • S Offline
                S Offline
                Sachin_Og
                wrote on 3 Jul 2020, 09:10 last edited by
                #7

                Thankyou @J-Hilk that works.
                However when I try to change

                color: highlight ? "red" : "green"
                

                to

                border.color: highlight ? "red" : "green"
                

                The compiler wont allow it saying:
                error: Group property of unknown type
                border.color: "green"

                Is this again related to Qt for MCU or I did something wrong?

                -Thanks

                J 1 Reply Last reply 3 Jul 2020, 09:14
                0
                • S Sachin_Og
                  3 Jul 2020, 09:10

                  Thankyou @J-Hilk that works.
                  However when I try to change

                  color: highlight ? "red" : "green"
                  

                  to

                  border.color: highlight ? "red" : "green"
                  

                  The compiler wont allow it saying:
                  error: Group property of unknown type
                  border.color: "green"

                  Is this again related to Qt for MCU or I did something wrong?

                  -Thanks

                  J Offline
                  J Offline
                  J.Hilk
                  Moderators
                  wrote on 3 Jul 2020, 09:14 last edited by
                  #8

                  @Sachin_Og well, that seems right, looks like a restriction of Qt for MCU, but a serious one oO


                  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.

                  J 1 Reply Last reply 3 Jul 2020, 09:43
                  0
                  • J J.Hilk
                    3 Jul 2020, 09:14

                    @Sachin_Og well, that seems right, looks like a restriction of Qt for MCU, but a serious one oO

                    J Offline
                    J Offline
                    J.Hilk
                    Moderators
                    wrote on 3 Jul 2020, 09:43 last edited by
                    #9

                    @J-Hilk

                    quick and dirty and probably not really suited for MCU (when they removed the border property to begin with)

                    ListView{
                            id:lView
                            anchors.fill: parent
                    
                            model: 10
                    
                            delegate: Item{
                                width: lView.width
                                height: 20
                                property bool highlight: lView.currentIndex == index
                    
                                Canvas{
                                    anchors.fill:parent
                                    property color borderColor: highlight ? "red" : "green"
                    
                                    onPaint:{
                                        var ctx = getContext("2d");
                                        ctx.beginPath();
                                        ctx.rect(0, 0, width, height);
                                        ctx.strokeStyle = borderColor;
                                        ctx.stroke();
                                    }
                                }
                    
                                Text {
                                    id:te
                                    text: index
                                    anchors.centerIn: parent
                                }
                    
                                MouseArea{
                                    onClicked: lView.currentIndex = index
                                    anchors.fill: parent
                                }
                            }
                        }
                    

                    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
                    0
                    • S Offline
                      S Offline
                      Sachin_Og
                      wrote on 3 Jul 2020, 09:58 last edited by
                      #10

                      @J-Hilk It does not support Canvas either.
                      Anyways atleast I got highlight part with your help.

                      I will probably try 2 rectangles or borderImage and update here if it fits my goal.

                      -Thanks

                      A 1 Reply Last reply 4 Jul 2020, 12:47
                      1
                      • S Sachin_Og
                        3 Jul 2020, 09:58

                        @J-Hilk It does not support Canvas either.
                        Anyways atleast I got highlight part with your help.

                        I will probably try 2 rectangles or borderImage and update here if it fits my goal.

                        -Thanks

                        A Offline
                        A Offline
                        auri
                        wrote on 4 Jul 2020, 12:47 last edited by
                        #11

                        @Sachin_Og https://doc.qt.io/QtForMCUs/qml-qtquick-borderimage.html#border-prop so border.color property is missing. Can you raise a feature request for this from the Support Portal of your Qt Account?

                        51ED9BD6-D75D-4010-8BCC-4929FF907284.jpeg

                        DON'T PANIC!!

                        1 Reply Last reply
                        0

                        1/11

                        3 Jul 2020, 07:25

                        • Login

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