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

QML:如何将滚动条添加到列表视图

堵存
2023-03-14

我有一个简单的ListView程序,其中试图附加滚动条。上下滚动时列表没有移动,在这里,列表应该相应地移动。似乎,我无法正确设置contentItem。寻找一些提示。

请在下面找到我的示例核心,于是我在listView中添加了一个垂直滚动条。rolesListModel是我的模特。

主要的qml

import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
Window {
width: 400
height: 300
visible: true

    ListModel
    {
        id:rolesListModel
        ListElement
          {
            t:"One"
        }
        ListElement
                      {
            t:"Two"
        }
        ListElement
        {
            t:"Three"
        }
        ListElement
        {
            t:"Five"
        }
        ListElement
        {
            t:"Six"
        }
        ListElement
        {
            t:"Seven"
        }
        ListElement
        {
            t:"Eight"
        }
        ListElement
        {
            t:"Nine"
        }
        ListElement
        {
            t:"Ten"
        }
    }

    ListView {
        id: listView
        width: 150
        height: 100
        flickableDirection: Flickable.VerticalFlick
        boundsBehavior: Flickable.StopAtBounds
        model: rolesListModel
        clip: true
        delegate: listRect

        ScrollBar {
            id: vbar
            active: true
            orientation: Qt.Vertical
            size: listView.height / listView.contentHeight
            position: listView.currentItem
            anchors.top: parent.top
            anchors.right: parent.right
            anchors.bottom: parent.bottom
        }
    }
    Component
    {
        id:listRect
        Rectangle
        {
            id:listElementRect
            height:20
            width: 100
            Text
            {
                id:elementText
                width:parent.width
                height:parent.height
                text:t
                horizontalAlignment: "AlignHCenter"
            }

        }
    }
}

共有1个答案

竺捷
2023-03-14

您使用的是QML的旧版本,QtQuick现在是2.14。如果可以从滚动条移动到滚动视图,则任意列表视图的代码如下所示:

import QtQuick 2.14
import QtQuick.Controls 2.14

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Scroll")

    ScrollView {
        anchors.fill: parent

        ScrollBar.vertical.policy: ScrollBar.AlwaysOn

        ListView {
            width: parent.width
            model: 20
            delegate: ItemDelegate {
                text: "Item " + (index + 1)
                width: parent.width
            }
        }
    }
}

请注意基本的滚动条配置行ScrollBar.vertical.policy:ScrollBar. AlwaysOn

https://doc.qt.io/qt-5/qml-qtquick-controls2-scrollview.html#scroll-bars

但是,如果您想继续使用代码,那么解决方案是明确声明垂直滚动条属性已绑定到滚动条

import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 2.0

Window {
    width: 400
    height: 300
    visible: true

    ListModel
    {
        id:rolesListModel
        ListElement
        {
            t:"One"
        }
        ListElement
        {
            t:"Two"
        }
        ListElement
        {
            t:"Three"
        }
        ListElement
        {
            t:"Five"
        }
        ListElement
        {
            t:"Six"
        }
        ListElement
        {
            t:"Seven"
        }
        ListElement
        {
            t:"Eight"
        }
        ListElement
        {
            t:"Nine"
        }
        ListElement
        {
            t:"Ten"
        }
    }

    ListView {
        id: listView
        width: 150
        height: 100
        flickableDirection: Flickable.VerticalFlick
        boundsBehavior: Flickable.StopAtBounds
        model: rolesListModel
        clip: true
        delegate: listRect

        ScrollBar.vertical: vbar

        ScrollBar {
            id: vbar
            active: true
            orientation: Qt.Vertical
            size: listView.height / listView.contentHeight
            position: listView.currentItem
            policy: ScrollBar.AlwaysOn
            anchors.top: parent.top
            anchors.right: parent.right
            anchors.bottom: parent.bottom
        }
    }

    Component
    {
        id:listRect
        Rectangle
        {
            id:listElementRect
            height:20
            width: 100
            Text
            {
                id:elementText
                width:parent.width
                height:parent.height
                text:t
                horizontalAlignment: "AlignHCenter"
            }

        }
    }
}

请注意关键的滚动条。垂直:vbar行,它将滚动条组件vbar分配给列表视图。

https://doc.qt.io/qt-5/qml-qtquick-controls2-scrollbar.html#details

 类似资料:
  • 问题内容: 我有一个要在HTML5中添加一个滚动条的表。我希望表格显示十行,然后用户可以向下滚动以查看其他歌曲。如何添加滚动条? 这是我在HTML5中的表格代码: 这是我的CSS代码: 问题答案: 如果您有表列标题,并且不想滚动这些标题,那么此解决方案可以为您提供帮助: 这种解决方案需要和内部标签元素。 注意 :如果您确定垂直滚动条始终存在,则可以使用css3 calc属性使thead细胞与tbo

  • 我试着在谷歌和专门的论坛上搜索这个问题,但什么也没找到。 我的问题是:我有一个带代表的列表视图,根据Qt指南从C模型中读取数据。 当项目超出可见区域时,我不能使用滚动条,但我会得到如下结果: 其中3点将被启用/禁用,以告诉列表可以根据视图中的项目数量向上或向下滚动。 总之,它就像一个定制的滚动条。 你对实现这种行为有什么建议吗?或者我可以看看哪里?谢谢你。克里斯蒂亚诺

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

  • 问题内容: 有没有一种方法可以将水平滚动条添加到HTML表格中?我实际上需要根据表的增长方式在垂直和水平方向上都可以滚动,但我无法显示任何滚动条。 问题答案: 您是否尝试过CSS 属性? 更新 正如其他用户指出的那样, 这不足以 添加滚动条。 因此,请参阅下面的评论和答案。

  • 在ListView上,您可以使用一个快速滚动条,它允许您拖动滚动条,以便轻松滚动到您希望的任何位置(使用fastScrollEnabled属性) 再加上“SectionIndexer”类和一些可选的属性,您可以在使用此滚动条时看到一个漂亮的弹出窗口(此处链接)。 这种东西显示在联系人应用程序上,这样你就可以很容易地滚动到特定的字母。 RecyclerView似乎没有这些。甚至连快速滚动都没有。 如

  • 我正在创建一个简单的应用程序供个人使用,我被卡住了,因为我需要从我的滚动视图中添加/删除文本。在屏幕截图下面的蓝色方块是我的滚动视图和邮件按钮(占位符)需要打开一个弹出窗口,我可以把2个值在2个不同的框,一个字符串和一个双。 Main_Activity 我知道如何做几乎所有的事情,但我不知道如何添加一个文本,每次我点击邮件按钮,它应该像这样,当我点击它 这就是完成时应该做的。汽车模块的左按钮是“从