如何獲取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