QML 列表视图插入一行后,ListView底部出现空格

问题描述

我正在尝试将行插入到 ListView 中,每一行都是一个自定义委托。插入每一行后,ListView 底部会有空白。我插入的行越多,空白区域就越多。委托的高度是内部元素的高度之和。
我尝试过固定delegate高度,固定ListView高度,甚至取消设置滚动条,但现象依然存在。

import QtQuick 2.12
import QtQuick.Window 2.12
import QtGraphicalEffects 1.15
import QtQuick.Controls 2.3
import QtMultimedia 5.12

import './delegate'
import ChatDataModel 1.0

ListView {
    id: control

    property MediaPlayer audioPlayer
    clip: true
    headerPositioning: ListView.OverlayHeader
    footerPositioning: ListView.OverlayFooter

    highlightFollowsCurrentItem: true
    highlightMoveDuration: 0
    highlightResizeDuration: 0

    spacing: 20

    delegate: Loader {
        sourceComponent: {
            switch(model.type) {
            case MsgType.KTextMsg:
                return text_comp;
            case MsgType.KImageMsg:
                return image_comp;
            case MsgType.KAudioFileMsg:
                return auido_comp;
            case MsgType.KCommonFileMsg:
                return file_comp;
            case MsgType.KVideoFileMsg:
                return video_comp
            case MsgType.KReplyMsg:
                return replyMsg_comp
            }
            return none_comp;
        }

        Component{
            id: text_comp
            ChatTextDelegate{ }
        }

        Component{
            id: auido_comp
            ChatAudioDelegate{ }
        }

        Component{
            id: image_comp
            ChatimageDelegate{ }
        }
        Component {
            id: file_comp
            ChatFileDelegate{ }
        }
        Component {
            id: video_comp
            ChatVideoDelegate{ }
        }
        Component {
            id: replyMsg_comp
            Item{ }
        }

        Component{
            id: none_comp
            Item{ }
        }
    }


    //相当于头尾边距
    header: Item{
        height: 10
    }
    footer: Item{
        height: 10
    }

    ScrollBar.vertical: ScrollBar {
        id: scroll_vertical
        contentItem: Item{
            visible: (scroll_vertical.size<1.0)
            implicitWidth: 6
            Rectangle{
                anchors.centerIn: parent
                width: parent.width
                height: parent.height>20?parent.height:20
                radius: 6
                color: (scroll_vertical.hovered||scroll_vertical.pressed)
                       ? Qt.darker("#D6D6D6")
                       : "#D6D6D6"
            }
        }
    }
}

    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)