如何检查组件是否有信号?

时间:2018-04-13 08:24:50

标签: qml qt5 qtquick2

如果组件有信号,有一种可靠的方法可以检查QML / JavaScript吗?

目前我发现此代码按预期工作:

if (myCustomComponent.myCustomSignal)
    myCustomComponent.myCustomSignal();

myCustomComponent的地方就像这样简单:

 Item {
    id: root

    signal myCustomSignal()
 }

仅当myCustomComponent有信号时才会执行该信号,但我不确定这是否正确。

1 个答案:

答案 0 :(得分:-2)

不,更可靠的方法应该是检查组件是否有信号:

if (typeof root.myCustomSignal !== 'undefined' && typeof root.myCustomSignal === 'function') { ... }

if (typeof root.myCustomSignal === 'function') { ... }

使用布尔值是不可靠的。将您的样本目标项目更改为:

Item {
    id: root

    property bool myCustomSignal: true
}

在这种情况下,您的条件将成立,您将尝试调用将导致崩溃的属性。 这种方法不易出错,并确保信号存在且可调用/起作用。