在QtQuick 1.0(Qt 4.8)应用程序中,我有以下信号处理程序代码。
Item {
property bool landscape: false
[...]
Connections {
[...]
onPpar: {
landscape = value;
[...]
}
}
}
...其中值来自C ++后端引发的信号,并且实际上包含一个“true”或“false”的字符串。这在我的Qt4.8应用程序上运行良好,但是当我将应用程序移植到Qt5.1和QtQuick 2.0时,与bool属性的类型对话停止了。现在我必须写一些像
这样的东西onPpar: {
landscape = (value == 'true');
}
...让它运行。
我认为类型对话是JavaScript自动执行的操作的一部分?正如我所说的那样,直到4.8它完全没有明确的对话技巧。
我在这里缺少什么?
答案 0 :(得分:0)
可能是4.8中声明模块中的错误(或功能)。 Qt5具有正确的行为,因为所有字符串“true”,“false”和“trololo”将评估为布尔值true。任何非空字符串都将计算为true。所以正确的解决方案是将signal参数从string更改为bool。如果由于某种原因你不能这样做,那么你需要写
landscape = (value == 'true');
就像你现在一样。