如何使用大量项目的H / V可滚动表(ListViews的ListView)

时间:2015-04-17 12:25:06

标签: listview gridview scrollview qml

我试图设计一个qml项目,其中包含数千个排列为网格/表格的项目。

我尝试了几种方法(TableView,GridView),但每次尝试使用行*列格式或内存来调整Component的大小时都会遇到问题。

我到目前为止找到的最佳方法如下:



    import QtQuick 2.4
    import QtQuick.Controls 1.3
    import QtQuick.Window 2.2
    import QtQuick.Dialogs 1.2

    ApplicationWindow {
        title: qsTr("Hello World")
        width: 800
        height: 600
        visible: true

        Item {
            id: grid
            property int numRows: 1000
            property int numColumns: 1000
            property int cellSize: 35
            property int cellSpacing: 1

            anchors.fill: parent

            ScrollView {
                id: scrollView
                anchors.fill: parent
                anchors.centerIn: parent
                contentItem: columnsList

                ListView {
                    id: columnsList

                    anchors.fill: parent
                    anchors.centerIn: parent
                    orientation: ListView.Vertical
                    spacing: grid.cellSpacing
                    clip: true
                    interactive: false
                    cacheBuffer: 1

                    model: grid.numRows

                    delegate: ListView {
                        id: row
                        width: columnsList.width
                        height: grid.cellSize
                        orientation: ListView.Horizontal
                        spacing: grid.cellSpacing
                        clip: true
                        interactive: false
                        cacheBuffer: 1

                        model: grid.numColumns
                        delegate: Rectangle {
                            width: grid.cellSize
                            height: grid.cellSize
                            color: "green"
                        }
                    }
                }
            }
        }
    }


性能还可以,但水平滚动条没有显示! 我也尝试手动设置高度和宽度,但是这会导致创建所有单元格并且它是不可接受的。

这是一个好方法吗? 是否有解决方法使水平滚动条出现?

0 个答案:

没有答案