获取ScrollArea的滚动位置

时间:2017-04-19 18:29:17

标签: qt scroll qml qtquick2

如何获取QtQuick2 ScrollView的滚动位置?我尝试了scrollView.contentItem.yscrollView.viewport.y,但两者都返回0。

我认为一个解决方案可能是将Flickable作为ScrollView的孩子。这会解决问题吗?对我来说,这是一个黑客,任何不是黑客的方式?

1 个答案:

答案 0 :(得分:0)

你是对的,contentItem.x/y总是0。 但是,您可以从contentItem的父级(不是ScrollView,而是contentItem的{​​{1}},{{1}的父级中检索您要查找的值} {} FlickableflickableItem contentItem.parent.x/y。两者之间的关系是:flickableItem

flickableItem.contentX/Y

正如 dtech 已经指出: 最好直接使用flickableItem.contentX === -flickableItem.contentItem.x。如果需要,您可以将ScrollBar从新的import QtQuick 2.0 import QtQuick.Controls 1.4 ApplicationWindow { id: root visible: true width: 400; height: 450 ScrollView { id: sv anchors.fill: parent contentItem: Rectangle { id: rect width: 800 height: 800 gradient: Gradient { GradientStop { position: 0; color: 'grey' } GradientStop { position: 1; color: 'red' } } } } Text { anchors.centerIn: parent text: sv.contentItem.parent.x + ' / ' + sv.contentItem.parent.y + '\n' + sv.flickableItem.contentX + ' / ' + sv.flickableItem.contentY + '\n' + sv.flickableItem.contentItem.x + ' / ' + sv.flickableItem.contentItem.y + '\n' + sv.flickableItem.contentItem + '\t' + sv.contentItem.parent // Just to suport my claim, both are the same color: 'white' } } 附加到其中。

我没有测量,但QTees吹嘘说,新的Flickable表现得更好。顺便说一句,它们更容易使用和风格,但不支持原生的外观和感觉。在这里,您将拥有属性QtQuick.Controls 2.x