2017-02-07 13 views
1

Wenn ich enabled Eigenschaft auf einem ComboBox zum Beispiel, dann wird es "ausgegraut". Soweit ich das beurteilen kann, zeichnet er eine Ebene über der Komponente mit einer gewissen Deckkraft, so dass das ursprüngliche Design sichtbar ist, aber leicht verblasst. Wie kann ich diesen Effekt optimieren?So passen Sie einen QtQuick 2-Komponentenstil an, während enable ist false

Ich habe versucht, die Hintergrundfarbe meiner Komponenten basierend auf dem Zustand der enabled-Eigenschaft zu ändern, aber das hat nicht geholfen. Zum Beispiel habe ich meine Hintergrundfarbe auf Rot gesetzt, als die enabled Eigenschaft falsch war, aber sie wurde nicht rot, sondern wurde aufgrund der Überlagerung, die ich oben beschrieben hatte, eher wie ein helles Rot.

Ein einfaches Codebeispiel:

ComboBox { 
    id: control 
    enabled: false 

    model: ["First", "Second", "Third"] 

    background: Rectangle { 
    color: control.enabled ? "transparent" : "red" 
    } 
} 
+0

Welche Qt-Version verwenden Sie? Ich glaube, das wurde in Qt 5.7.1 behoben. – jpnurmi

+1

Dieses spezielle Commit, das bei Qt 5.7.1 gelandet ist, hat die Opazitätsaussage vom Wurzelelement des Controls in die Bausteine ​​verschoben. Wenn Sie nun den Hintergrund ersetzen, haben Sie die volle Kontrolle über seine Opazität: http: //code.qt .io/cgit/qt/qtquickcontrols2.git/commit/src/Importe/Kontrollen/ComboBox.qml? id = f6acc98f3a96ab6cafedfe2a3f097a1974abad16 – jpnurmi

+0

PS. Der Name der Eigenschaft ist 'enabled'. – jpnurmi

Antwort

1

So wie @jpnurmi vorgeschlagen, die Quelle meines Problems wurde in Qt 5.7.1 behoben.

ComboBox { 
    id: control 
    enabled: false 

    model: ["First", "Second", "Third"] 

    opacity: 1 // * 

    background: Rectangle { 
    color: control.enabled ? "transparent" : "red" 
    } 
} 

* = diese hier hinzufügen, wird die Standard-Opazität Verhalten überschreiben und dann kann es manuell über die Hintergrundkomponente beispielsweise gesteuert werden.

Verwandte Themen