【问题标题】:Access Flickable from parent element从父元素访问 Flickable
【发布时间】:2015-04-29 21:20:23
【问题描述】:

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

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 中,因为它需要访问放在列中的元素。

【问题讨论】:

    标签: qml qtquick2 flickable


    【解决方案1】:

    这是Tab 对象的问题。这是一个Loader,其默认属性为sourceComponent。当您将Flickable 元素放入其中时,它是converted* 并分配给组件。查看您的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 对象不同的上下文。这意味着您可以从flickable 访问tab,但不能从tab 访问flickable

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 2017-01-12
      • 2011-10-25
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      相关资源
      最近更新 更多