2017-06-06 4 views
0

S'il vous plaît quelqu'un peut-il m'expliquer une chose. Supposons que j'ai un élément, si je clique dessus, un menu déroulant apparaît. Comment faire cela lorsque vous survolez des éléments de menu, ils se distinguent comme ça?QML MenuItem En surbrillance ne fonctionne pas

code:

Rectangle { 
    id: main_window 
    width: 600 
    height: 600 
    property int mrg: 10 

    Rectangle { 
     anchors.centerIn: parent 
     width: 500 
     height: 500 
     color: 'green' 

     Text { 
      id: field 
      text: "Click!" 
      font.pointSize: 20 
      color: 'white' 
      anchors.centerIn: parent 

      MouseArea { 
       id: ma 
       anchors.fill: parent 
       hoverEnabled: true 

       onClicked: { 
        menu.x = ma.mouseX 
        menu.open() 
       } 
      } 

      Menu { 
       id: menu 
       y: field.height 
       MenuItem { 
        text: "Menu item" 
        highlighted: true 

       } 
      } 
     } 
    } 
} 

Dans la documentation, je suis tombé sur le point que la highlight appropriée est responsable de sélectionner l'élément de menu approprié. Je l'ai installé dans le True, mais cela n'a rien changé. S'il vous plaît dites-moi ce que je fais mal. Merci beaucoup.

Répondre

1

L'implémentation par défaut de MenuItem n'inclut aucune fonctionnalité de mise en évidence visuelle, mais vous pouvez adapter la représentation graphique à vos besoins, comme expliqué dans le Qt manuals. Ainsi, votre MenuItem devrait ressembler à ceci:

MenuItem { 
    id: control 
    text: "Menu item" 

    background: Item { 
     implicitWidth: 200 
     implicitHeight: 40 

     Rectangle { 
      anchors.fill: parent 
      anchors.margins: 1 
      color: control.highlighted ? "blue" : "transparent" // blue background if the control is highlighed 
      MouseArea { 
       anchors.fill: parent 
       hoverEnabled: true // enable mouse enter events when no mouse buttons are pressed 
       onContainsMouseChanged: control.highlighted = containsMouse // set the highlighted flag when the mouse hovers the MenuItem 
      } 
     } 
    } 
} 

Notez que cette mise en œuvre est basée sur le default implementation fourni par Qt:

background: Item { 
    implicitWidth: 200 
    implicitHeight: 40 

    Rectangle { 
     x: 1 
     y: 1 
     width: parent.width - 2 
     height: parent.height - 2 
     color: control.visualFocus || control.down ? Default.delegateColor : "transparent" 
    } 
} 
+0

Merci beaucoup pour l'aide. C'est du travail! –