获取当前显示的委托的索引 - QML ListView

mar*_*trz 10 qt listview list qml

我创建了一个ListView,它显示了用户定义的几页内容(纯文本).显示的页面是委托.一次只能看到一个页面.我决定使用它来捕捉到一个项目,就像iOS'启动器的工作原理一样.用户只需在页面之间轻弹即可.(这将用于触摸屏)

我需要有一些操作的当前显示页面的索引.ListView的currentIndex始终保持== 0.我怎样才能得到它?

对于喜欢代码的人:

 ListView
 {
      onCurrentIndexChanged: console.log(currentIndex) // this gets called only once - at startup
      delegate: Column
      {
           // The page displayed, only one page at a time
      }
 }
Run Code Online (Sandbox Code Playgroud)

谢谢

mcc*_*chu 12

有很多方法可以获取屏幕中显示的当前项目的索引.如果可以获取当前页面的xy坐标,则可以在ListView中使用indexAt方法.

在每个委托中,您可以index在委托范围内使用角色查找索引.该index像你在你的模型中声明的作用,并通过自动分配的ListView.例如,

ListView 
{
    delegate: Column
    {
        property int indexOfThisDelegate: index
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

这里index介绍的角色是:

委托也可以使用包含模型中项目索引的特殊索引角色.请注意,如果从模型中删除项目,则此索引设置为-1

另一种方法是currentItem在ListView中为属性显式赋值,因此视图可以自行滚动.这是Qt文档中的一个简单示例,它与您的应用程序类似.