QML矩形按钮突出显示延迟

时间:2015-04-16 17:09:56

标签: c++ qt qml delay highlight

我有一个按钮列表,当用户按下它直到它被释放时我想单独突出显示。

问题在于,当您滚动列表时,即使您触摸它一毫秒,您触摸的第一个按钮也会突出显示。它看起来不太好,所以我想为高亮动画添加一个延迟。

在突出显示动画发生之前的一点延迟可能会解决我认为的这个美容问题。

如何为高光动画添加延迟?

我一直在尝试这样的事情:

Rectangle {
    id: folderButton    
    property bool pressed: false
    signal clicked

    height: mainWindoww.height * 0.1
    width: parent.width
    color: pressed ? "lightgrey" : "white"

    function release() {
        autoRepeatClicks.stop()
        folderButton.pressed = false
    }

    SequentialAnimation on pressed {
        id: autoRepeatClicks
        running: false

        PropertyAction { target: folderButton; property: "pressed"; value: true }
        ScriptAction { script: folderButton.clicked() }
        PauseAnimation { duration: 1000 }

        SequentialAnimation {
            loops: Animation.Infinite
            ScriptAction { script: folderButton.clicked() }
            PauseAnimation { duration: 500 }
        }
    }

    MouseArea {
        anchors.fill: parent

        onPressed: autoRepeatClicks.start()
        onReleased: folderButton.release()
        onCanceled: folderButton.release()
    }
}

但似乎这段代码没有添加任何时间差

2 个答案:

答案 0 :(得分:1)

您可以使用Timer来实现此目的。例如,你可以这样做:

Item {
    Timer {
        interval: 500;
        running: true;
        repeat: true
        onTriggered: time.text = Date().toString()
    }

    Text { id: time }
}

答案 1 :(得分:0)

如果您只想为颜色属性设置动画,请尝试以下操作:

Behavior on color { ColorAnimation { duration: 1000 } }