获取 ScrollArea 的滚动位置
Get scroll position of ScrollArea
如何获取 QtQuick2 的滚动位置 ScrollView
?我尝试了 scrollView.contentItem.y
和 scrollView.viewport.y
,但两者都是 return 0。
我认为一种解决方案可能是将 Flickable
作为 ScrollView
的 child。那能解决问题吗?对我来说这也是黑客攻击,但无论如何这不是黑客攻击?
你是对的,contentItem.x/y
总是0。
但是,您可以从 contentItem
的父级(不是 ScrollView
而是 Flickable
的 contentItem
、flickableItem
) 与 contentItem.parent.x/y
或来自 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'
}
}
正如 dtech 已经指出的那样:
直接使用 Flickable
可能会更好。如果需要,您可以将 ScrollBar
s 从新 QtQuick.Controls 2.x
附加到它。
我没有测量数据,但 QTees 吹嘘说新的 QtQuick.Controls 2.x
性能更优越。顺便说一下,它们更易于使用和设计风格,但不支持原生外观和感觉。在这里你将拥有属性 contentX/Y
如何获取 QtQuick2 的滚动位置 ScrollView
?我尝试了 scrollView.contentItem.y
和 scrollView.viewport.y
,但两者都是 return 0。
我认为一种解决方案可能是将 Flickable
作为 ScrollView
的 child。那能解决问题吗?对我来说这也是黑客攻击,但无论如何这不是黑客攻击?
你是对的,contentItem.x/y
总是0。
但是,您可以从 contentItem
的父级(不是 ScrollView
而是 Flickable
的 contentItem
、flickableItem
) 与 contentItem.parent.x/y
或来自 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'
}
}
正如 dtech 已经指出的那样:
直接使用 Flickable
可能会更好。如果需要,您可以将 ScrollBar
s 从新 QtQuick.Controls 2.x
附加到它。
我没有测量数据,但 QTees 吹嘘说新的 QtQuick.Controls 2.x
性能更优越。顺便说一下,它们更易于使用和设计风格,但不支持原生外观和感觉。在这里你将拥有属性 contentX/Y