Запуск таймера при выборе элемента ListView - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь запустить таймер, когда выбран элемент в ListView. Я делаю это, определяя «работающий» таймер с помощью кода (где определяется пользователем):

running: <containingItem>.ListView.isCurrentItem ? true : false

Если я этого не сделаю, каждый элемент в списке запускает свой таймер включения, поэтому таймер должен быть выключен только go для выбранного элемента списка. Когда я делаю это в компоненте списка, он работает - срабатывает только таймер, связанный с выбранным элементом, остальные - нет. Когда я пытаюсь сделать это вне ListView (и всех содержащих его объектов), это не работает. Кажется, я не могу вызвать команду ListView.isCurrentItem каким-либо способом. Что мне здесь не хватает?

Мой код настроен следующим образом:

Column {
  id: lv1
  ListView {
    id: lv2
    model: myModel
  }
  Component {
    id: lv3
    Item {
      id: lv4
      Rect {
        Timer {
          id: timer1
          running: (lv4.ListView.isCurrentItem) ? true : false //this works correctly
        }
      }
    }
  }
}

Rect {
  Timer {
    id: timer2
    running: (lv1.lv3.lv4.ListView.isCurrentItem ? true : false //this doesn't work correctly
  }
}

Когда я запускаю этот код, я получаю сообщение об ошибке: Не удается прочитать свойство lv4 из undefined

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Вы не можете использовать идентификатор компонента (lv3), как если бы он был экземпляром вашего делегата. Это просто определение объекта, а не его экземпляр.

Я не совсем понимаю, какова ваша цель, но если вам просто нужно остановить таймер, когда выбран элемент в вашем списке, тогда вы должны уметь это сделать:

ListView {
    onCurrentIndexChanged: timer2.stop()
}
0 голосов
/ 05 августа 2020

ListView.isCurrentItem - это присоединенное свойство , и на него можно ссылаться только из внутреннего объекта, к которому оно прикреплено. Вот почему вы не могли вызвать его из timer2.

Подробнее об этом можно прочитать здесь: https://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html#attached -properties-and-connected-signal-handlers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...