QML组件中的别名方法

时间:2016-04-20 15:10:38

标签: qt qml

在QML中,我正在写一个这样的组件:

import QtQuick 2.0
import NDDQuickItem 1.0

Item {
  property alias source: ndd.nddContentPath

  function goToSlide(component,slide){
    ndd.goToSlide(component,slide);
  }

  NDDQuickItem {
    width: parent.width
    height: parent.height
    id: ndd
  }
}

我可以使用property aliasNDDQuickItem的属性“提升”到组件的根目录。但是,如图所示,我目前正在编写仅在NDDQuickItem上重新调用方法的组件全局方法。

是否有适用于方法的property alias等价物?类似的东西:

method alias goToSlide: ndd.goToSlide // not valid QML

goToSlide = ndd.goToSlide             // not valid QML

1 个答案:

答案 0 :(得分:5)

不使用alias,但您可以property var v : someId.someFoo然后object.v()

请注意,如果someFoo() { console.log(this) },则someId.someFoo() this中的someId将为object.v(),而this object中的this将为signal goToSlide(var component,int slide) onGoToSlide: ndd.goToSlide(component,slide) }。由于JS的工作方式引用函数体中的东西,这不会是一个问题,就像在C ++中使用错误的alias一样。

您也可以使用信号:

tail -f /var/log/nginx/access.log

通过额外的好处,您可以重新映射"它来自组件外部的其他东西。

无论如何,两者都不是必需的:

  

我目前正在编写仅重新调用方法的全局方法   NDDQuickItem。

它不是全局的,它是根对象的成员,这样做没有错,这是常见的做法。我的意思是,如果效率是主要考虑因素,那么你就不会编写QML。此外,要知道nginx也不是免费的,在整数和实物的情况下,它需要与完全成熟的财产相同的空间。