ДС
Feb. 1, 2022, 2:15 p.m.

Синхронизация анимаций в 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

Do you like it? Share on social networks!

0

Comments

Only authorized users can post comments.
Please, Log in or Sign up
  • Last comments
  • AK
    April 1, 2025, 11:41 a.m.
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    March 9, 2025, 9:02 p.m.
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    March 9, 2025, 4:14 p.m.
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
  • ИМ
    Nov. 22, 2024, 9:51 p.m.
    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
  • Evgenii Legotckoi
    Oct. 31, 2024, 11:37 p.m.
    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup