QML:如何获取Pathview中的当前项

时间:2012-11-28 11:45:07

标签: qt qml qt-quick

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

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

2 个答案:

答案 0 :(得分:4)

如果您已定义 preferredHighlightBegin preferredHighlightEnd 属性,则可以使用 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
  }
}

答案 1 :(得分:3)

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

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;
        }
      }
    }

  }

}

效率不高,但确实有效。