【问题标题】:QML: flat non-scrollable list viewQML:平面不可滚动列表视图
【发布时间】:2019-08-03 18:03:37
【问题描述】:

我想在一个大的 ScrollView 中让两个列表视图一个接一个,因为它们的代表略有不同。所以布局是这样的:

不幸的是 ListView 类型也是一个 flickable 类型,因此它不会将其所有内容呈现在一个适合放在滚动视图中的平面列表中。 那么如何使用 Qt Quick 视图来做到这一点呢?

我尝试了一个技巧:我可以像这样调整列表视图的大小:

    ListView {
        id: list1

        height: contentHeight + spacing * count

        model: superModel
        delegate: delegate1
    }

不幸的是,除了是一个肮脏的黑客和留下不必要的轻弹抓住我的点击之外,它并没有真正起作用:内容不适合,因为仍然有顶部和底部边距,我不知道它的价值。

【问题讨论】:

    标签: qt qml qtquick2 qtquickcontrols2


    【解决方案1】:

    您应该在ScrollView 中使用ColumnLayout 和两个Repeater(或Flickable,如果您愿意)

    ScrollView {
        contentWidth: width   //maybe you don't need this
    
        ColumnLayout {
            width: parent.width   //maybe you don't need this
    
            Repeater {
                model: superModel1
                delegate: delegate1
            }
    
            Repeater {
                model: superModel2
                delegate: delegate2
            }
        }
    }
    

    由于您没有显示代理,您可能需要对 implicitHeight 和/或 implicitWidth 进行微调。

    【讨论】:

    • 谢谢,这正是我所需要的。现在甚至不需要任何implicitHeight 调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2021-11-27
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多