微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。