滚动时我的列表视图中的这些故障是什么?

What are these glitches in my listview when scrolling?

我正在用 QT 为 Python 编写文件转换软件,您可以将文件拖到软件中,单击转换按钮,然后拖出输出文件。当用户将文件拖到软件中时,所有文件的名称都会添加到一个 ListView 中。

当用户将文件拖入 ListView 时,它会调用 backend.addToPaths(url) 函数,其中包含拖入其中的每个文件路径。然后此函数将所有文件路径附加到文件路径的内部列表中,然后更新列表视图,使用所有文件名调用 main.qml 文件中的 updateList (paths) 函数,这会清除列表视图,然后追加拖入的所有文件名、旧文件名和新文件名。

所有文件名都正确添加到列表视图中,但是当我在列表视图内部滚动时,它会产生这些非常奇怪的渲染错误,as shown in this video,或者在这些图像中:

图片 1:

图 2:

图 3:

一开始我以为可能是剪裁的问题,所以我把它去掉了,没有任何改变。然后我尝试增加 listview 的显示边距,然后是它的 cacheBuffer,但它仍然没有帮助。我也尝试将 pixelAligned 设置为 true,但仍然没有用。我猜这可能是因为 QT 不太擅长处理正在更新或更改的列表模型,但我真的不知道。

如果需要,这里是我的 main.qml 文件的简化版本:

ListView {
    id: inputFileView
    // @disable-check M16
    objectName: "inputFileView"
    clip: true
    boundsBehavior: Flickable.StopAtBounds
    flickableDirection: Flickable.VerticalFlick
    displayMarginBeginning: 100
    displayMarginEnd: 100

    function updateList(paths) {
        console.log("updating list");
        inputFileModel.clear();
        paths.forEach( function (item) {
            inputFileModel.append({
                'name': item
            });
        });
    }

    model: ListModel {
        id: inputFileModel
    }
    delegate: Item {
        Row {
            id: row1
            Text {
                text: name
            }
        }
    }

    DropArea {
        anchors.fill: parent
        onDropped: {
            drop.urls.forEach( function (url) {
                backend.addToPaths(url)
            });
        }
    }
}

我猜这是 PySide2 的错误?我注意到有人用 PySide2 标签替换了 Pyside 标签,我什至没有显示 python 代码来澄清我使用的是那个版本,所以我想知道这是否意味着问题只在PySide2,所以我从那个切换到 PySide6,它工作了。我不知道是什么原因造成的,但我想现在没问题了。