PathView : при прокрутке списка возникают торможения
Добрый день! В QML использую прокручиваемый список через представление PathView посредством PathLine (объекты списка стоят на одной линии). В списке может быть от 4 до N элементов, но на экране видны должны быть только 3 - остальные остаются в скрытлой областе (в кэше).
Вот код представления:
- PathView {
- id: pathView
- anchors.fill: parent
- model: listModelInfo
- snapMode: PathView.SnapOneItem
- pathItemCount: 3
- path: Path {
- id: path
- startX: -itemSize/2
- startY: pathView.height / 2
- PathLine {
- id: pathLine
- x: pathView.width-itemSize/2
- y: pathView.height / 2
- relativeX: x+itemSize
- }
- }
- delegate: Item {
- id: itemListInfo
- height: 220*1.2
- width: itemSize
- Rectangle {
- id: rectItemListInfo
- anchors.fill: parent
- color: "transparent"
- border {
- color: "black"
- width: 0
- }
- Image {
- id: imgListItemReleased
- anchors.fill: parent
- source: model.fcover
- }
- MouseArea {
- id: maListItem
- anchors.fill: parent
- onClicked: {
- console.log("MouseArea Click = "+model.fname)
- }
- }
- }
- }
- }
Таким образом, список можно прокручивать на экране как карусель. Но возникает один неприятный эффект. При прокручивании списка возникают некоторые торможения, которые пропадают если список очень часто листать в одном направлении. Если листание остановить на секунду и снова возобновить, то торможения повторяются. Если поменять направление листания, то также начинаются торможения. Почитав документацию наткнулся на cacheItemCount. Поиграв с этим параметром ситуация слегка улучшилась, но все равно присутствует - в начале листания торможения нет, спустя 2-3 пролистывания тормоза повторяются. Такое ощущуение, что засоряется то ли кэш, то ли что-то со скоростью анимации...Есть идеи где можно покопаться?
p.s. в проекте есть PathView в котором элементы списка не уходят в скрытую область, а вертятся по кругу на экране...так вот тут все хорошо без всяких тормозов
Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Последние комментарии
- AK1 апреля 2025 г. 11:41Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VP9 марта 2025 г. 16:14Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- Сейчас обсуждают на форуме
- DT14 апреля 2025 г. 15:38Всем привет! На Qt 6.8 MinGW пытаюсь сделать управление подключением WiFi из программы. Пока делаю поддержку Windows, но так же хочу в дальнейшем внедрить и поддержку Linux/MacOS. Для…
- f15 февраля 2025 г. 13:46Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Вряд ли здесь удастся сделать какие-то улучшения.
Волшебного свойства - "Сделать быстро и красиво" там нет, а возможностей оптимизациии производительности в вашем приложенном коде нет совсем.
Единственное бутылочное горлышко, которое может быть у вас - это сама модель данных listModelInfo, и то не факт, если это стандартная модель данных.
Любая другая оптимизация скорее будет уже в C++ части исходников PathView.
Да и другая проблема в том, что не факт, что проблема проявится у кого-то другого с другим устройством, особенно, если учитывать то, что не ясна степень того, что означает торможение в вашем понимании.
спасибо за ответ! Попробую больше тестов, поищу зависимости. Если проблема решится, то отпишусь здесь :)