ДС
1 февраля 2022 г. 14:15

Синхронизация анимаций в ListView

qml, animation

Добрый день. Столкнулся с проблемой синхронизации анимации разных делегатов. У меня есть ListView, в котором хранятся делегаты состояния сети, я навешиваю анимацию на индикатор состояния при переходя состояний. Вопрос, как синхронизировать анимации внутри делегатов, чтобы они меняли свойство opacity в "такт".

  1.  
  2. ListView {
  3. id: networkList
  4. model: ListModel { id: networksModel }
  5.  
  6. highlightMoveDuration : 200
  7.  
  8. orientation: ListView.Horizontal
  9. anchors.right: right_button.left
  10. anchors.left: left_button.right
  11. anchors.top: parent.top
  12. anchors.bottom: parent.bottom
  13.  
  14. anchors.leftMargin: 10 * pt
  15. anchors.rightMargin: 10 * pt
  16. delegate: networkItem
  17. interactive: false
  18. clip: true
  19. }
  20.  
  21.  
  22.  
  23. Component {
  24. id: networkItem
  25.  
  26. Item {
  27. id:controlDelegate
  28. width: networksModel.count > visible_count -1 ? item_width : parent.parent.width/networksModel.count
  29. height: 40
  30.  
  31. RowLayout {
  32. anchors.verticalCenter: parent.verticalCenter
  33. anchors.horizontalCenter: parent.horizontalCenter
  34. spacing: 5 * pt
  35. Text {
  36. id: nameNet
  37. Layout.fillWidth: true
  38. font: dapQuicksandFonts.dapMainFontTheme.dapFontQuicksandBold12
  39. color: currTheme.textColor
  40. text: name
  41. }
  42.  
  43. ImageLoader{
  44. id:img
  45. Layout.alignment: Qt.AlignVCenter
  46. Layout.preferredHeight: 8 * pt
  47. Layout.preferredWidth: 8 * pt
  48. innerWidth: 8 * pt
  49. innerHeight: 8 * pt
  50.  
  51. source: networkState === "OFFLINE" ? "qrc:/resources/icons/" + pathTheme + "/indicator_offline.png" :
  52. networkState === "ERROR" ? "qrc:/resources/icons/" + pathTheme + "/indicator_error.png":
  53. "qrc:/resources/icons/" + pathTheme + "/indicator_online.png"
  54. }
  55. SequentialAnimation {
  56. NumberAnimation {
  57. target: img
  58. properties: "opacity"
  59. from: 1.0
  60. to: 0.1
  61. duration: 1000
  62. }
  63.  
  64. NumberAnimation {
  65. target: img
  66. properties: "opacity"
  67. from: 0.1
  68. to: 1.0
  69. duration: 1000
  70. }
  71. loops:Animation.Infinite
  72. running: networkState !== targetState? true : false
  73. onRunningChanged:
  74. {
  75. if(!running)
  76. img.opacity = 1;
  77. }
  78. }
  79. }
  80. }
  81. }
  82. }
1

Вам это нравится? Поделитесь в социальных сетях!

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь