Qt 5.6 вводит новые элементы управления, как технический просмотр "Qt Labs Controls". Среди прочего, элементы управления вводят встроенный тип ScrollBar
(интерактивный) и ScrollIndicator
(не интерактивный).
В Qt 5.7 новые элементы управления вышли из технического предварительного просмотра и теперь переименованы в «Quick Controls 2», чтобы подчеркнуть тот факт, что они превосходят предыдущие элементы управления.
Если вы используете Qt 5.6, которая является версией LTS и будет вокруг довольно долго, ScrollBar
можно использовать следующим образом:
import QtQuick 2.6
import Qt.labs.controls 1.0
import QtQuick.Window 2.2
ApplicationWindow {
visible: true
width: 400
height: 600
Flickable {
anchors.fill: parent
contentWidth: image.width
contentHeight: image.height
//ScrollIndicator.vertical: ScrollIndicator { } // uncomment to test
ScrollBar.vertical: ScrollBar { }
ScrollBar.horizontal: ScrollBar { }
Image {
id: image
source: "http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"
}
}
}
В то время как в Qt 5.7 и далее вы можете использовать ScrollBar
или ScrollIndicator
следующим образом:
import QtQuick 2.6
import QtQuick.Controls 2.0
import QtQuick.Window 2.2
ApplicationWindow {
visible: true
width: 600
height: 300
Flickable {
anchors.fill: parent
contentWidth: image.width
contentHeight: image.height
ScrollIndicator.vertical: ScrollIndicator { }
//ScrollBar.vertical: ScrollBar { } // uncomment to test
Image {
id: image
source: "http://s-media-cache-ak0.pinimg.com/736x/92/9d/3d/929d3d9f76f406b5ac6020323d2d32dc.jpg"
}
}
}
синтаксис использования в значительной степени то же самое, тогда как крупный рефакторинг произошло в коде стиля, как можно видеть, например, в Labs Controls ScrollIndicator
customization page по сравнению с Quick Controls 2 ScrollIndicator
customization page.
+1 для ответа :) –
Спасибо! Очень гибкое и эффективное решение. Единственное, чего не хватает, это горизонтальная ориентация.Поскольку ListView поддерживает его, я буду добавлять привязку свойства для прокрутки по горизонтали. –
Если у нас есть интерактивное изменение количества делегатов, для этого определяется цепочка привязки: 'Binding { target: flickable; недвижимость: "contentY"; значение: (handle.y * (flickable.contentHeight - flickable.height)/clicker.drag.maximumY); когда: (clicker.drag.active || clicker.pressed); } ' И вся прокрутка сломана тогда. Мы можем прокрутить отца, а затем contentHeight. Можете ли вы, пожалуйста, помочь с этим? – VALOD9