1

Flickable 要素内で定義されている関数を呼び出そうとしていますが、id でアクセスすることはできないようです。が呼び出されるとReferenceError: flickable is not defined、次のコードが生成されます。tab.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プロパティが ですsourceComponentFlickableその中に要素を入れるとComponentに変換*されて割り当てられます。オブジェクトが表示されると、プロパティを介してアクセスできるオブジェクトがTab作成されます。Flickableitem

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 に答える