QML:如何在 Pathview 中获取当前项目

Posted

技术标签:

【中文标题】QML:如何在 Pathview 中获取当前项目【英文标题】:QML : How to get current item in Pathview 【发布时间】:2012-11-28 11:45:06 【问题描述】:

我想知道如何在 Pathview 中获取当前项目。

我们确实有 iscurrentItem 属性,但如果可能的话,我们如何使用它。使用我目前的实现,我得到的是当前索引,但不是该索引处项目的值

【问题讨论】:

【参考方案1】:

如果您定义了 preferredHighlightBeginpreferredHighlightEnd 属性,您可以使用 childAt 函数来获取当前项目:

//example for vertical path
view.childAt(0, view.height * (preferredHighlightEnd + preferredHighlightBegin) / 2.0);

还有另一种方法,您可以迭代 PathView 的所有子项并找出哪个子项是当前项:

for(var i = 0; i < view.children.length; ++i)

  if(view.children[i].PathView.isCurrentItem)
    console.log(i + " is current item")
    //view.children[i] is your current item here
  

【讨论】:

【参考方案2】:

在您的委托项目中,您可以设置一个更新路径自定义属性的连接:

PathView 
  id: myPathView

  // ...

  property Item currentItem
  delegate: pathDelegate


Component 
  id: pathDelegate

  Item 
    id: delegateItem

    // ...

    Connection 
      target: myPathView
      onCurrentIndexChanged: 
        if (myPathView.currentIndex === delegateItem.index) 
          myPathView.currentItem = delegateItem;
        
      
    

  


效率不高,但很有效。

【讨论】:

以上是关于QML:如何在 Pathview 中获取当前项目的主要内容,如果未能解决你的问题,请参考以下文章

QML 在 PathView 中使用其项目的 NumberAnimation 更改路径

QML PathView:通过鼠标滚轮更改路径视图的当前索引

在最后一个元素处停止 Pathview 移动

QML PathView 中的 SetRootIndex

具有居中当前项的简单 PathView

qml----Model/View入门PathView