0

我需要在使用 qml 单击时将按钮的背景图像从一个图像更改为另一个图像。

这是我的代码:

Button{
    id:bu
    x: 121
    y: 40
    iconSource: "q.png"
    activeFocusOnPress: false
    opacity: 1
    checkable: true
    checked: true
    Layout.minimumWidth: 100
    Layout.minimumHeight: 100
}

上面的代码只设置了背景图像,但是我需要onClicked使用 qml2.4 更改事件或任何其他事件的背景图像。

4

1 回答 1

2

如果您查看ButtonQML 类型,您会发现clicked()单击按钮时发出的信号。我们可以onClicked在 qml 中的 slot 中捕获这个信号,并可以更改iconSource按钮的属性

代码将是这样的:

    Button {
    id: bu
    x: 121
    y: 40
    iconSource: "q.png"
    activeFocusOnPress: false
    opacity: 1
    checkable: true
    checked: true
    Layout.minimumWidth: 100
    Layout.minimumHeight: 100

    onClicked: {
                bu.iconSource = "index.png"
            }

}

通过这种方式,您可以将按钮的屏幕背景图像从一个图像更改为另一个图像。

更新: 根据您的要求,您可以使用以下代码:

property bool bImgChange: true

Button {
id: bu
x: 121
y: 40
iconSource: "q.png"
activeFocusOnPress: false
opacity: 1
checkable: true
checked: true
Layout.minimumWidth: 100
Layout.minimumHeight: 100

    onClicked: {
        if ( bImgChange == true )
        {
            bu.iconSource = "index.png"
            bImgChange = false
        }
        else
        {
            bu.iconSource = "q.png"
            bImgChange = true
        }
    }
}

您可以使用用户定义的属性 bImgChange并可以使用它来检查条件。您的情况将不起作用,因为bu.iconSource将为您提供图像文件所在的完整路径。例如。并且您正在将其与if 条件中/home/user/some/path/q.png的字符串进行比较。q.png

我希望这将有所帮助。

于 2015-04-17T07:42:34.247 回答