Qt 获取滚动区域的滚动位置
如何获取QtQuick2的滚动位置Qt 获取滚动区域的滚动位置,qt,scroll,qml,qtquick2,Qt,Scroll,Qml,Qtquick2,如何获取QtQuick2的滚动位置ScrollView?我尝试了scrollView.contentItem.y和scrollView.viewport.y,但两者都始终返回0 我认为一个解决方案可能是将Flickable作为ScrollView的子对象。这能解决问题吗?对我来说,这也是一种黑客行为,不管怎样,这都不是黑客行为?你是对的,contentItem.x/y总是0。 但是,您可以从contentItem的父项(它不是ScrollView,而是Flickable的contentItem中
ScrollView
?我尝试了scrollView.contentItem.y
和scrollView.viewport.y
,但两者都始终返回0
我认为一个解决方案可能是将
Flickable
作为ScrollView
的子对象。这能解决问题吗?对我来说,这也是一种黑客行为,不管怎样,这都不是黑客行为?你是对的,contentItem.x/y
总是0。
但是,您可以从contentItem
的父项(它不是ScrollView
,而是Flickable
的contentItem
中的使用contentItem.parent.x/y
或使用flickableItem.contentX/y
从flickableItem
。两者之间的关系是:flickableem.contentX===-flickableem.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'
}
}
正如dtech已经指出的那样:
最好直接使用Flickable
。如果需要,您可以从新的QtQuick.Controls 2.x
将s附加到它
我没有测量数据,但QTEE们吹嘘说,新的QtQuick.Controls 2.x
性能优越。顺便说一句,它们更易于使用和设计,但不支持本地的外观和感觉。这里有属性contentX/Y
您实际上只需要flickable。您应该参考flickableItem
,例如,请参阅我的答案。