首页 > 解决方案 > QML Tableview 水平滚动条

问题描述

我正在使用TableViewQML 组件,其中每个列宽设置为表格总宽度除以列数。这引入了一些分数部分,结果,水平滚动条几乎总是在底部可见。

但我不想禁用滚动条,因为我有能力改变列宽,并且可能需要滚动条。所以我的问题是关于这个TableView组件的初始显示。我想在第一次显示组件时去掉那个滚动条,但不要禁用它以备将来使用。

我是 QML 的新手,不知道它的所有方面,但我想到的解决方案是像我一样设置每列的宽度,然后为最后一个获取所有先前列的总和并将其宽度设置为父级。宽度 - 那个总和。您能帮我理解如何使用 QML 实现它吗?

标签: c++qtqml

解决方案


columnWidthProvider在添加列时计算一次。我不能用这个重现你的错误。contentWidth变得一样width

    TableView {
        id: table
        anchors.fill: parent

        columnWidthProvider: function (column) {
            console.log(parent.width , columns, parent.width / columns)
            // wdth is 0 here
            return parent.width / columns
        }

        ScrollBar.horizontal: ScrollBar {
            policy: ScrollBar.AsNeeded 
        }

//....
    }

但我在另一种观点中遇到了同样的问题。解决方案是:

Flickable {

    id:view

    ScrollBar.horizontal: ScrollBar {
        policy: (view.width - view.contentWidth < -3) ? 
            ScrollBar.AlwaysOff : ScrollBar.AsNeeded}

    }
}

推荐阅读