如何获取QtQuick2 ScrollView
的滚动位置?我试过scrollView.contentItem.y
和scrollView.viewport.y
,但都是总是返回0。获取ScrollArea的滚动位置
我认为一个解决办法可能是将Flickable
作为ScrollView
的孩子。这会解决问题吗?对我来说,这是一个黑客,任何不是黑客的方式?
如何获取QtQuick2 ScrollView
的滚动位置?我试过scrollView.contentItem.y
和scrollView.viewport.y
,但都是总是返回0。获取ScrollArea的滚动位置
我认为一个解决办法可能是将Flickable
作为ScrollView
的孩子。这会解决问题吗?对我来说,这是一个黑客,任何不是黑客的方式?
你是对的,contentItem.x/y
始终为0 但是你可以用contentItem.parent.x/y
retrive你正在寻找从contentItem
任父值(这不是ScrollView
但Flickable
的contentItem
的flickableItem
)或从flickableItem
与flickableItem.contentX/Y
。在两者之间的关系是:flickableItem.contentX === -flickableItem.contentItem.x
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'
}
}
由于帝特已经指出: 它可能会更好,直接使用Flickable
。如果需要,您可以将ScrollBar
s从新的QtQuick.Controls 2.x
加到它。
我没有测量,但QTees吹嘘,新的QtQuick.Controls 2.x
是表现最好的。顺便说一句,他们更容易使用和风格,但不支持本地外观和感觉。在这里,你将拥有属性contentX/Y
你真的只需要轻弹。 – dtech