2015-04-16 2 views
0

У меня есть список кнопок, которые я хочу выделить отдельно, когда пользователь нажимает его до тех пор, пока он не будет отпущен.QML Прямоугольная кнопка выделения подсветки

Проблема заключается в том, что при прокрутке списка первая кнопка, которую вы касаетесь, будет выделяться, даже если вы коснулись ее на миллисекунду. Это не выглядит красиво, поэтому я хочу добавить задержку для анимации выделения.

Небольшая задержка перед анимацией выделения, вероятно, исправит эту косметическую проблему, которую я предполагаю.

Как добавить задержку к анимации выделения?

Я пытался что-то вроде:

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() 
    } 
} 

, но кажется, что этот код не добавляет какой-либо разницы во времени

ответ

1

Вы можете использовать Timer для достижения этой цели. Например, вы можете сделать:

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

    Text { id: time } 
} 
+0

спасибо, что трюк! – CantThinkOfAnything

+1

Если кто-то предоставил ответ на ваш вопрос, это полезно для других людей, которые смотрят на ваш вопрос, у кого может быть такая же проблема, если есть приемлемый ответ. Вы можете принять ответ, нажав галочку ниже вариантов голосования. – deW1

+0

Да, конечно, я забыл щелкнуть по нему. – CantThinkOfAnything

0

Если вы просто хотите анимировать свойство цвета, попробовать что-то вроде:

Behavior on color { ColorAnimation { duration: 1000 } }

+0

Нет, это не касается изменения цвета. Я хочу отложить изменение цвета, чтобы оно не происходило сразу, как только оно касалось. Это делает прокрутку выглядеть уродливым, потому что вы видите кнопку, мигающую при каждом прокрутке – CantThinkOfAnything

Смежные вопросы