如何在QtQuick中对齐ListView中的项目

如何在QtQuick中对齐ListView中的项目,qt,qml,qtquick2,Qt,Qml,Qtquick2,我有以下横向列表: BulletsListDelegate.qml import QtQuick 2.0 Rectangle { width: 8 height: 8 color: "#808080" radius: width * 0.5 } main.qml import QtQuick 2.0 Item { width: 256 height: 256 ListModel { id: bulletsListM

我有以下横向列表:

BulletsListDelegate.qml

import QtQuick 2.0

Rectangle {
    width: 8
    height: 8

    color: "#808080"
    radius: width * 0.5
}
main.qml

import QtQuick 2.0

Item {
    width: 256
    height: 256

    ListModel {
        id: bulletsListModel

        ListElement {
            a: 'example'
        }
        ListElement {
            a: 'example'
        }
        ...
    }

    ListView {
        id: bulletsList

        spacing: 8
        orientation: ListView.Horizontal

        delegate: BulletsListDelegate {}
        model: bulletsListModel

        anchors.bottom: parent.bottom
        width: parent.width
    }
}
元素显示如下(它们是灰色的子弹)

我希望它们显示在它们(其父对象)上方黑框的水平中心


是否有任何形式的集中或对齐列表中的项目?

因此,如果我正确理解您的问题,您希望在ListView中对齐项目的实例。使用ListView,这并不容易实现。如果项目数量不均匀,可以使用preferredHighlightBegin和PreferredHighlighted在ListView的中心有一个1个项目大小的区域,然后将hightlightRangeMode设置为ListView.StriclyEnforceRange。您可以将currentIndex设置为指向index,以便中间项将被视为当前项。这使它处于您定义的范围内,因此位于中间。但是,当你有偶数个物品时,这是不起作用的,所以这是一种价值有限的黑客行为

我的问题是:是否必须使用ListView来定位项目?看起来您实际上根本不需要ListView的很多功能?如果您不需要ListView中的其他功能(如滚动),您可以使用中继器。这使您可以简单地将项目放入行定位器中,您可以使用计数器的宽度*(delegateWidth+spacing)-间距和等于代理高度的高度。然后,您可以使用acnhors将行定位到您喜欢的中心位置

建议我使用和行而不是ListView,它彻底解决了我的问题。但是尚未找到对齐实际ListView的方法

Row {

    spacing: 8

    Repeater {
        id: bulletsRepeater

        model: 5

        BulletsDelegate { }
    }

    anchors.bottom: parent.bottom
    anchors.horizontalCenter: parent.horizontalCenter
}

抱歉,我提供的代码是可复制的,只是缺少导入语句。不管怎样,我还是编辑了它,谢谢。不,它是不可复制的,例如没有BulletsListDelegate。对不起,我真的错过了它。当你提供MRE时,我建议你阅读链接。我在图片中显示的那些项目符号应该是旋转木马中的索引或分页内容,我不知道这个内容的名称。它应该是动态创建和删除的,这些东西的颜色也会改变。你有什么最好的办法来解决我的问题吗?我所能想到的就是ListView(反射似乎很棘手),但我对Qt很陌生,我可能错过了一些东西,因为我遇到了XY问题。我设法使用Repeater制作分页器,正如您所说(我不知道这种类型),或者您可以使用Qt Quick Controls 2