如何禁用滚动视图

How to disable ScrollView

我为我的 ListView 使用 ScrollView,但 我有时需要禁用它

一个简单的案例是这样的:

ScrollView {
    id: scroll
    ListView {
        model: DelegateModel {
            id: visualModel
            model: myModel //Model is set in the cpp
            delegate: Rectangle {
                    ...
                Button {
                    onClicked { //Important part
                        scroll.flickableItem.interactive = false //It doesn't work 
                    }
                }
            }
        }
    }
}   

我该如何继续?

正如 dtech 提到的,ListView 有一个内置的 Flickable,所以滚动,不需要 ScrollView。您还可以使用以下方法将 ScrollBar 添加到 ListView

ScrollBar.vertical: ScrollBar {}

但是,如果您需要使用 ScrollView 作为您想要的老式外观,则没有记录在案的方法。实际上,在使用 QtQuick.Controls 1.x 时,您必须经常求助于 Controls 的未记录的属性。

在这种特殊情况下,您可以设置属性:

__horizontalScrollBar.enabled: false
__verticalScrollBar.enabled: false
__wheelAreaScrollSpeed: 0

再次:这没有记录,可能会改变 如果 会有更新版本的 QtQuick.Controls 1.x - 但是这不太可能,因为现在的焦点在于关于现代 QtQuick.Controls 2.x 的发展,它与 1.x 版本

记录的 API 不兼容