4
我有一個嵌套的滾動型,類似於以下QML:嵌套滾動型的QML不響應鼠標滾輪
import QtQuick 2.0
import QtQuick.Controls 1.1
Rectangle {
width: 200
height: 600
ScrollView {
id: sView
anchors.fill: parent
ListView {
id: list
boundsBehavior: Flickable.StopAtBounds
clip: true
focus: true
interactive: true
model: 5
delegate: Component {
MouseArea {
id: hoverArea
width: 100
height: 200
onClicked: list.currentIndex = index;
Rectangle {
id: fauxParent
anchors.fill: parent
border.width: 1
border.color: "black"
Rectangle {
anchors.top: parent.top
anchors.left: parent.left
height: parent.height
width: parent.width/2
border.width: 1
border.color: "purple"
color: "green"
Text {
anchors.centerIn: parent
text: "stuff"
}
}
ScrollView {
//parent: sView
anchors.top: fauxParent.top
anchors.right: fauxParent.right
height: fauxParent.height
width: fauxParent.width/2
ListView {
model: 3
delegate: Component {
Rectangle {
radius: 10
height: 100
width: 100
color: "blue"
}
}
}
}
}
}
}
}
}
}
它似乎正常運行,除了滾動型內將不會對鼠標滾輪響應:外部ScrollView攔截該事件。我在研究中發現的唯一解決方法是將內部滾動視圖的父級直接設置爲外部滾動視圖(取消註釋parent: sView
行)。不幸的是,這將所有五個scrollview委託放置在外部滾動視圖的右上角。看起來ScrollView根據其父項定位自己?
爲了記錄,我的實際應用程序正在將大部分頁面包裝在滾動視圖中,以便允許用戶訪問可能超出當前窗口大小的部分。不過,本節的內容針對各種不同的目的有各種不同的控制,包括一些滾動視圖。所以我也會接受一種替代方法來移動一些對窗口來說太大的通用內容。
這是一個Windows桌面應用程序,所以我不需要考慮移動特定的問題。