qml信号处理程序中的自动类型对话

时间:2014-03-05 00:47:07

标签: javascript qt qml qtquick2

在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它完全没有明确的对话技巧。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

可能是4.8中声明模块中的错误(或功能)。 Qt5具有正确的行为,因为所有字符串“true”,“false”和“trololo”将评估为布尔值true。任何非空字符串都将计算为true。所以正确的解决方案是将signal参数从string更改为bool。如果由于某种原因你不能这样做,那么你需要写

landscape = (value == 'true');

就像你现在一样。