2017-06-06 4 views
0

Bitte kann mir jemand eine Sache erklären. Angenommen, ich habe ein Element, wenn ich darauf klicke, erscheint ein Dropdown-Menü. Wie machen Sie das, wenn Sie den Mauszeiger über die Menüpunkte bewegen, stehen sie so hervor?QML MenuItem Hervorgehoben funktioniert nicht

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 

       } 
      } 
     } 
    } 
} 

In der Dokumentation, stieß ich auf den Punkt, dass die richtige highlight zur Auswahl des entsprechenden Menüpunkt zuständig ist. Ich habe es im True installiert, aber es hat nichts geändert. Bitte sagen Sie mir, was ich falsch mache. Danke vielmals.

Antwort

1

Die Standardimplementierung MenuItem enthält keine visuelle Hervorhebung, aber Sie können die grafische Darstellung an Ihre Bedürfnisse anpassen, wie in der Qt manuals erläutert. Also, Ihr MenuItem sollte wie folgt aussehen:

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 
      } 
     } 
    } 
} 

Beachten Sie, dass diese Implementierung auf der von Qt bereitgestellt default implementation basiert:

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

Vielen Dank für die Hilfe. Es ist Arbeit! –

Verwandte Themen