2017-06-14 6 views
1

Ich möchte folgende Tasten-Layout entwerfen:QML wie Farbe eingestellt in einem mouseArea

Link

Es hat ein Bild Restart-Taste oben auf einem blauen Hintergrund gelegt. Ich möchte dasselbe in Qt mit QML replizieren. Ich benutze ein MouseArea Qt Quick-Objekt, über das ich das Bild in Stretch Füllmodus überlappen. Es gibt jedoch keine Möglichkeit, einen blauen Hintergrund für den Mausbereich zu erhalten. Derzeit sieht es wie folgt aus:

Link

Der entsprechende Code für die gleiche:

MouseArea { 
    id: restartbutton 
    x: 669 
    width: 50 
    height: 50 
    opacity: 1 
    antialiasing: false 
    hoverEnabled: true 
    anchors.top: parent.top 
    anchors.topMargin: 8 
    z: 1 

    Image { 
     id: image2 
     anchors.fill: parent 
     source: "restart_icon.png" 
    } 

} 

Wie kann ich den Hintergrund für MouseArea hier?

Antwort

1

Vielleicht möchten Rectangle wie folgt verwenden:

Rectangle { 
    width:50 
    height: 50 
    Image { 
    anchors.fill:parent 
    source: "restart_icon.png" 
    } 
    MouseArea { 
    anchors.fill:parent 
    onClicked: {...} 
    } 
} 

Werfen Sie einen Blick auf die QML Advanced Tutorial für weitere Informationen

+0

Hallo! Um diese Antwort zu verbessern, könnten Sie * die Hintergrundfarbe * in Ihrem Beispiel tatsächlich einstellen. – derM

+0

Es kann auch besser sein, den 'MouseArea' als Root-Knoten zu haben (' Rectangle' mit 'MouseArea' zu tauschen) und dann die' Rectangle' 'color' als' Eigenschafts-Alias-Hintergrund: myRect.color' freizulegen. Der Grund dafür ist, dass die 'MouseArea' mehr Signale und Eigenschaften enthält, die für die Darstellung relevant sein könnten als das' Rectangle'. Wenn Sie eine saubere Oberfläche haben und nur ein Minimum freilegen wollen, wäre ein 'Item' als root die Alternative. – derM

+0

Ja, das funktioniert. Und wie @derM sagte besser, MouseArea als root zu haben. –

Verwandte Themen