Qt 在QML中是否有方法更改多个事件上的按钮颜色?

Qt 在QML中是否有方法更改多个事件上的按钮颜色?,qt,qml,Qt,Qml,我是Qml的新手,我有点迷路了。我想为图像或按钮的颜色设置多个状态。一个简单的部分是,如果按下按钮,它会改变颜色或图像。这可以通过以下方式实现: Button { width: 50 height: 50 background: Rectangle { color: parent.pressed ? "red" : "blue" } } 此外,我还有状态:单击、启用、启用单击和更多 因此,首先:我是否可以只捕获parent.pressed而不使

我是Qml的新手,我有点迷路了。我想为图像或按钮的颜色设置多个状态。一个简单的部分是,如果按下按钮,它会改变颜色或图像。这可以通过以下方式实现:

Button {
    width: 50
    height: 50

    background: Rectangle {
        color: parent.pressed ? "red" : "blue"
    }
}
此外,我还有状态:单击、启用、启用单击和更多

因此,首先:我是否可以只捕获parent.pressed而不使用else语句,例如:

if (parent.pressed)
    color = "red"
elseif (onClicked)
    color = "blue"
....
当我的后端禁用或启用任何GUI元素时,可能会设置其他状态,我可以请求这些状态并更改颜色

所以基本上我有两个问题:如何在if语句中捕获一个事件,以及如何捕获多个事件,而不使用if-else语句,如:

 parent.pressed ? "red" : "blue"
我更进一步,可以添加状态

Button {
width: 50
height: 50
id: btn
onClicked: state="clicked"
onPressed: state="pressed"

background: Rectangle
{
    anchors.fill: parent
}

states: [
    State {
        name: "clicked"
        PropertyChanges { target: btn; background: color= "red" }
    },
    State {
        name: "pressed"
        PropertyChanges { target: btn; background: color= "blue" }
    }
]
}


但这不会改变我的按钮的颜色,但会改变UI的其余部分。

我猜您的代码中有语法错误。 实际上应该是这样的:

按钮{
id:btn
文字:“点击我”
属性颜色bgColor
anchors.centerIn:父对象
状态:按下?“按下”:“常规”
背景:矩形{
颜色:btn.bgColor
}
国家:[
陈述{
姓名:“普通”
财产变动{
目标:btn
背景颜色:“橙色”
}
},
陈述{
名称:“已按下”
财产变动{
目标:btn
背景颜色:“绿色”
}
}
]
}
或者您也可以玩
矩形

背景:矩形{
id:bg
}
国家:[
陈述{
姓名:“普通”
财产变动{
目标:bg
颜色:“橙色”
}
},
陈述{
名称:“已按下”
财产变动{
目标:bg
颜色:“绿色”
}
}
]

我猜您的代码中有语法错误。 实际上应该是这样的:

按钮{
id:btn
文字:“点击我”
属性颜色bgColor
anchors.centerIn:父对象
状态:按下?“按下”:“常规”
背景:矩形{
颜色:btn.bgColor
}
国家:[
陈述{
姓名:“普通”
财产变动{
目标:btn
背景颜色:“橙色”
}
},
陈述{
名称:“已按下”
财产变动{
目标:btn
背景颜色:“绿色”
}
}
]
}
或者您也可以玩
矩形

背景:矩形{
id:bg
}
国家:[
陈述{
姓名:“普通”
财产变动{
目标:bg
颜色:“橙色”
}
},
陈述{
名称:“已按下”
财产变动{
目标:bg
颜色:“绿色”
}
}
]

< /代码>是否可以从C++后端进入状态?改变一个状态,例如在命令到来的时候,一切都是可能的,只要有足够的努力),但是请创建另一个问题。是否有可能从C++后端进入状态?更改状态(例如,收到命令时?一切皆有可能,只要付出适当的努力-),但请提出另一个问题。