qml中的MouseArea(onEntered,onExited,onReleased)

时间:2019-03-06 09:18:05

标签: qml

我有一个按钮。我想更改按钮的状态,例如:

默认图像为blackonEntered我希望图像为blueonExited我希望图像为black(等于默认状态),onReleased我希望图像为{{1} }(等于onEntered状态)。

  

注意:   blue应该在按钮内部有效,而按钮onRelease外部则无效。

如何实现?

鼠标区域如下所示:

onRelease

我面临的问题是: MouseArea { anchors.fill: firstImage(parent) onEntered: { firstImage.source = "blue.img" } onExited: { firstImage.source = "black.img" } onReleased: { firstImage.source = "blue.img" } } 在按钮外处于活动状态。 我希望onRelease在按钮内释放时处于活动状态。

1 个答案:

答案 0 :(得分:0)

您可以利用以下事实:可以为qml中的每个对象提供额外的自定义属性。

我想出了以下内容,这似乎是您的要求,但是,我发现了一个缺陷,因为当您“输入”并按时,按钮将进入输入状态,因此在处于“释放”状态,离开MouseArea后,它将再次进入“已退出”状态。

注意,我没有复制firstImage.source内容,但是您可以根据自己的情况轻松定制此示例

import QtQuick.Controls 2.4

Button {

    hoverEnabled: true

    property bool touched : false

    onHoveredChanged: touched = hovered
    onReleased: touched = true

    text: touched ? "touched" : "not touched"
}

需要设置hoverEnabled