从同名的后代方法调用 QML 祖先方法
Posted
技术标签:
【中文标题】从同名的后代方法调用 QML 祖先方法【英文标题】:Calling QML ancestor method from descendant method of same name 【发布时间】:2020-08-12 20:30:05 【问题描述】:我正在尝试改进 QML 中包含的 SoundEffect 类。我的新“MySoundEffect.qml”如下所示。但是,我无法弄清楚如何从我自己的方法中调用 SoundEffect 类的同名“播放”方法。我在下面的尝试失败了:
import QtQuick 2.0
import QtMultimedia 5.12
SoundEffect
function play()
console.log("Play clicked in my sound effect")
SoundEffect.play()
显而易见的答案是为我的方法选择一个新名称,但我希望有一种方法可以实现这一点。
【问题讨论】:
这已经被问过了(例如here)。不幸的是,QML 不支持该功能,尽管它确实很有用。如果您想要一个调用另一个,您将需要您的派生对象函数使用与基对象函数不同的名称。 【参考方案1】:JarMan 链接的答案 - 回答了我问的为什么不可能。但是,包装祖先类也可以让我对程序的其余部分透明地进行更改:
import QtQuick 2.0
import QtMultimedia 5.12
Item
property alias source : effect.source
property alias loops : effect.loops
property alias volume : effect.volume
property alias muted : effect.muted
SoundEffect
id: effect
function play()
effect.play()
【讨论】:
以上是关于从同名的后代方法调用 QML 祖先方法的主要内容,如果未能解决你的问题,请参考以下文章