当前位置: 首页 > 知识库问答 >
问题:

自定义滚动条的QML列表视图

郤玉书
2023-03-14

我试着在谷歌和专门的论坛上搜索这个问题,但什么也没找到。

我的问题是:我有一个带代表的列表视图,根据Qt指南从C模型中读取数据。

当项目超出可见区域时,我不能使用滚动条,但我会得到如下结果:

... 
Item_1
Item_2
Item_N
...

其中3点将被启用/禁用,以告诉列表可以根据视图中的项目数量向上或向下滚动。

总之,它就像一个定制的滚动条。

你对实现这种行为有什么建议吗?或者我可以看看哪里?谢谢你。克里斯蒂亚诺

共有1个答案

穆城
2023-03-14

我已经解决了。

片段在这里。是带有C后端的整个QML文件的一部分,但非常简单,可能对想要这样做的人有用:

Column
    {
        anchors.fill: parent
        // header
        Rectangle
        {
            id: headerComponent
            width: list.width
            height: headerHeight
            color: "transparent"

            Text {
                anchors.fill: parent
                color: "white"
                visible: list.dotUp
                font.pointSize: 11
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                text: qsTr("...")
            }
        }

        ListView
        {
            id: list
            property int draggedItem: -1
            property int visibileItems: 0
            property bool dotUp: false
            property bool dotDown: false

            width: parent.width
            height: parent.height - headerHeight*2
            clip: true
            spacing: 5
            model: backendList.model
            highlightMoveDuration: 10
            focus: true
            currentIndex: backendList.currentIndex
            snapMode: ListView.SnapToItem
            pixelAligned: true

            function setHeaderAndFooter()
            {     
                if (visibileItems >= count)
                {
                    return
                }
                var index = indexAt(1, contentY)
                if ( index === 0 && visibileItems < count)
                {
                    dotDown = true
                    dotUp = false
                }

                if (index > 0 && !(count-index <= visibileItems))
                {
                    dotDown = true
                    dotUp = true
                }

                if (index > 0 && count-index <= visibileItems)
                {
                    dotDown = false
                    dotUp = true
                }
            }

            onCountChanged:
            {
                visibileItems =  height / ( backendList.itemHeight + list.spacing)
                var reminder =  height % ( backendList.itemHeight + list.spacing)
                if (reminder)
                {
                    ++visibileItems
                }

                setHeaderAndFooter()
            }

            onContentYChanged:
            {
                var index = indexAt(1, contentY)
                setHeaderAndFooter()
            }
.....
        // footer
        Rectangle
        {
            width: list.width
            height: headerHeight
            color: "transparent"

            Text {
                anchors.fill: parent
                color: "white"
                font.pointSize: 11
                visible: list.dotDown
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                text: qsTr("...")
            }
        }
 类似资料:
  • 我有一个简单的ListView程序,其中试图附加滚动条。上下滚动时列表没有移动,在这里,列表应该相应地移动。似乎,我无法正确设置contentItem。寻找一些提示。 请在下面找到我的示例核心,于是我在listView中添加了一个垂直滚动条。rolesListModel是我的模特。 主要的qml

  • 问题内容: 我想用CSS自定义滚动条。 我使用此WebKit CSS代码,该代码非常适合Safari和Chrome: 如何在Firefox中执行相同的操作? 我知道我可以使用jQuery轻松地做到这一点,但如果可行,我宁愿使用纯CSS做到这一点。 将不胜感激某人的专家意见! 问题答案: Firefox 64添加了对规范草案CSS滚动条模块级别1的支持,该模块添加了的两个新属性,并提供了一些如何显示

  • 我有一个问题与列表视图。列表视图太长,它的一部分出现在窗口之外,但我不能附加滚动条。我尝试了许多不同的组合。我认为这个问题在于高度参数,但如果删除它,列表视图只显示第一个条目。 有什么方法可以让它滚动吗?

  • 问题内容: 如何通过CSS(级联样式表)为一个页面而不是整个页面自定义滚动条? 问题答案: 我认为整合有关滚动条,CSS和浏览器兼容性的最新信息会有所帮助。 滚动条CSS支持 当前,没有跨浏览器的滚动条CSS样式定义。最后,我在W3C文章中提到了以下内容,并于最近进行了更新(2014年10月10日): 某些浏览器(IE,Konqueror)支持非标准属性“ scrollbar-shadow-col

  • 本文向大家介绍JS自定义滚动条效果,包括了JS自定义滚动条效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JS自定义滚动条的具体代码,供大家参考,具体内容如下 更多关于滚动效果的精彩文章点击下方专题: javascript滚动效果汇总 jquery滚动效果汇总 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我正在使用j文件选择器,我试图实现以下目标: https://i.stack.imgur.com/O6MNj.png 我试图强制LIST视图使用VERTICAL滚动条,或者我的第二个选项是禁用详细视图中的大小和修改列。 编辑: 有什么方法可以在jFileChooser中插入JScrollBar?