如何获取QtQuick2 ScrollView
的滚动位置?我尝试了scrollView.contentItem.y
和scrollView.viewport.y
,但两者都返回0。
我认为一个解决方案可能是将Flickable
作为ScrollView
的孩子。这会解决问题吗?对我来说,这是一个黑客,任何不是黑客的方式?
答案 0 :(得分:0)
你是对的,contentItem.x/y
总是0。
但是,您可以从contentItem
的父级(不是ScrollView
,而是contentItem
的{{1}},{{1}的父级中检索您要查找的值} {} Flickable
或flickableItem
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