2017-02-07 25 views
1

例如,当我在ComboBox上设置enabled属性时,它会变为“灰色”。据我可以告诉它在组件上方绘制一层具有一定不透明度的图层,以使原始设计可见但稍微褪色。我如何调整这种效果?如何自定义QtQuick 2组件样式,但启用为false

我试图根据enabled属性的状态更改我的组件背景颜色,但这并没有帮助。例如,我将背景颜色设置为红色,当enabled属性为假时,但它并未变为红色,由于覆盖了我上面描述的内容,它变得更像浅红色。

一个简单的代码例如:

ComboBox { 
    id: control 
    enabled: false 

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

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

你正在使用哪个Qt版本?我相信这是固定在Qt 5.7.1。 – jpnurmi

+1

这个落在Qt 5.7.1中的特殊提交将opacity语句从控件的根元素移到了构件块,所以现在如果替换背景,您可以完全控制它的不透明度:http://code.qt .io/cgit/qt/qtquickcontrols2.git/commit/src/imports/controls/ComboBox.qml?id = f6acc98f3a96ab6cafedfe2a3f097a1974abad16 – jpnurmi

+0

PS。该属性的名称是“enabled”。 – jpnurmi

回答

1

那么作为@jpnurmi建议的,我的问题的来源是固定在Qt的5.7.1。

ComboBox { 
    id: control 
    enabled: false 

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

    opacity: 1 // * 

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

* =在此处添加此项,将覆盖默认的不透明度行为,然后可以通过背景组件手动控制它,例如。

相关问题