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. Can't change current item in TreeView (v2) by mouse
Qt 6.11 is out! See what's new in the release blog

Can't change current item in TreeView (v2) by mouse

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
1 Posts 1 Posters 303 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.
  • ocgltdO Offline
    ocgltdO Offline
    ocgltd
    wrote on last edited by
    #1

    I have implemented a simple TreeView (QCC2) which nests several levels. It renders properly, and I can navigate the tree up/down expand/collapse using the keyboard.

    But - Mouse clicks will not change the current model index, UNTIL....I click the expand icon on an item with children. After that it works fine. (Or until after I expand an item using the keyboard).

    This seems very strange...and I'm tempted to file a bug report, but is there something I'm missing?

    I have attached my code below - but not sure it help

    Component {
          id: delegateMenuItem
          Item {
              property int itemDepth: TreeView.depth
              property bool itemHasChildren: TreeView.hasChildren
              property bool itemIsExpanded: TreeView.isExpanded
              property var currentModelIndex: mytreeview.currentModelIndex
              property bool itemIsCurrent: (row === mytreeview.currentIndex.row) && (column === mytreeview.currentIndex.column)
    
              implicitWidth: Math.max(paneMenu.width -rectRightItemBackground.width/2,5)
              implicitHeight: Math.max(rectItemBackground.implicitHeight,5)
              Rectangle {
                  id: rectRightItemBackground
                  x: rectItemBackground.width -radius/2
                  anchors {
                      top: rectItemBackground.top
                      bottom: rectItemBackground.bottom
                  }
                  radius: rectItemBackground.height
                  width: radius
                  height: radius
                  color: rectItemBackground.color
              }
              Rectangle {
                  id: rectItemBackground
                  x: 0
                  color: itemIsCurrent ? gui.colorRGBString(GUIConstants.EColorElement_BackgroundSelected) : (TreeView.isExpanded ? gui.colorRGBString(GUIConstants.EColorElement_BackgroundPartialSelected) : gui.colorRGBString(GUIConstants.EColorElement_Background))
                  anchors.verticalCenter: parent.verticalCenter
                  anchors.left: parent.left;
                  implicitWidth: paneMenu.width -rectRightItemBackground.width/2
                  implicitHeight: itemHeightByDepth(itemDepth)
                  // Expand icon
                  Text {
                      id: indicator
                      x: itemDepth * 5
                      color: itemIsCurrent ? gui.colorRGBString(GUIConstants.EColorElement_TextSelected) : gui.colorRGBString(GUIConstants.EColorElement_Text)
                      text: itemHasChildren ? (itemIsExpanded ? "▼" : "▶") : ""
                      anchors.verticalCenter: parent.verticalCenter
                      leftPadding: 5
                      rightPadding: 5
    
                      TapHandler {
                          onTapped: {
                              console.log("In tap handler "+itemDepth+" "+name)
                              if (itemHasChildren)
                                  mytreeview.toggleExpanded(row)
                          }
                      }
    
                  }
                  // Top level icons
                  Image {
                      id: itemIcon
                      anchors.left: indicator.right
                      width: itemDepth === 0 ? 20 : 0
                      height: itemDepth === 0 ? 20 : 0
                      source: itemDepth !== 0 ? "" : "icons/dark/"+icon+".svg";  // Get icon string
                      anchors.verticalCenter: parent.verticalCenter
                      visible: itemDepth === 0
                  }
                  // Recolor the icon to match item
                  ColorOverlay {
                      anchors.fill: itemIcon
                      source: itemIcon
                      color: itemIsCurrent ? gui.colorRGBString(GUIConstants.EColorElement_TextSelected) : gui.colorRGBString(GUIConstants.EColorElement_Text)
                  }
    
                  // Item text
                  Text {
                      anchors.left: itemIcon.right
                      width: rectItemBackground.width
                      verticalAlignment: Text.AlignVCenter
                      height: parent.height
                      id: itemText
                      text: qsTr(name) //+" C:"+currentModelIndex+(itemIsCurrent?"Y":"N")+" S:"+(itemIsSelected?"Y":"N")
                      font.pixelSize: fontSizeByDepth(itemDepth)
                      leftPadding: 10
                      elide: Text.ElideRight
                      color: itemIsCurrent ? gui.colorRGBString(GUIConstants.EColorElement_TextSelected) : gui.colorRGBString(GUIConstants.EColorElement_Text)
                  }  // Tezt
              }  // Rectangle
          }  // Item
      }  // Component
    
    
      Rectangle {
          id: paneMenu
          anchors.fill: parent
          color: gui.colorRGBString(GUIConstants.EColorElement_Background)
          TreeViewTemplate {
              id: mytreeview
              anchors.fill: parent
              model: treemodel
              delegate: delegateMenuItem
              currentModelIndex: viewIndex(0,0)
              currentIndex: viewIndex(0,0)
              focus: true
              onCurrentModelIndexChanged: {
                  console.log("In item change"+currentModelIndex);
    
              }
          }
      }
    
    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