Мне удалось вызвать события перетаскивания, вручную изменив свойство hotSpot
прямоугольника над списком.Документация по перетаскиванию QML гласит:
Изменения в hotSpot запускают новое движение перетаскивания с обновленной позицией.
Так что я делал это каждый раз, когда Listview
contentY
изменяется(происходит вертикальная прокрутка)
onContentYChanged:
{
rectangle.Drag.hotSpot.x += 0.0001
rectangle.Drag.hotSpot.x -= 0.0001
}
Оглядываясь назад, однако, это «хакерское» решение.Свойство hotSpot
является свойством класса QPointF
( ссылка ).Это означает, что он может быть установлен с использованием различных методов (setX, setY, rx, ry ..).Например, это:
rectangle.hotSpot += Qt.point(0,0)
или
rectangle.hotSpot = Qt.point(rectangle.hotSpot.x,rectangle.hotSpot.y)
должно работать теоретически, сбрасывая точку hotSpot
, когда изменяется contentY
, но тестирование показало, что, к сожалению, это не вызываетновое перетаскивание.(ошибка или намерение, я не знаю)
Теперь некоторые из вас, кто больше интересуется Qt и QML, могут узнать больше об этом и о том, как правильно решить проблему, но вышеупомянутое решение работает для меня и послеИспытывая все, что я мог себе представить, чтобы получить более чистое решение, я остановился на нем.