1

我正在尝试调用在 Flickable 元素中定义的函数,但似乎无法通过 id 访问它。以下代码ReferenceError: flickable is not definedtab.getValues()被调用时产生:

import QtQuick 2.4

Tab {
    id: tab
    function getValues() {
        flickable.getValues()
    }
    Flickable {
        id: flickable
        clip: true
        flickableDirection: Flickable.VerticalFlick
        contentHeight: column.height
        topMargin: 2 * pxPermm
        function getValues() {
            console.log("flickable.getValues() called")
        }
        Column {
            id: column
            // some content
        }
    }
}

我还应该如何访问 Flickable 元素?函数 getValues() 必须放在 Flickable 内,因为它需要访问放在列内的元素。

4

1 回答 1

2

那是Tab对象的问题。它的Loader默认属性是sourceComponent. 当您将一个Flickable元素放入其中时,它会被转换*为 Component 并分配。查看您的Tab对象时,它会创建您的Flickable对象,可以通过item属性访问该对象:

function getValues() {
  if(tab.active)
    tab.item.getValues();
  else
    console.log("Tab is not viewed so item does not exists.");
}

Flickable对象已继承但与您的对象不同的上下文Tab。这意味着您可以tab从访问flickable,但不能flickabletab

于 2015-04-29T23:13:24.990 回答