2014-03-05 35 views
2

在QtQuick 1.0(Qt 4.8)应用程序中,我有以下信号处理程序代码。qml信号处理程序中的自动类型对话

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

可能是4.8中声明模块中的一个bug(或特征)。 Qt5具有适当的行为,因为所有字符串“true”,“false”和“trololo”都会计算为布尔值true。任何非空字符串将评估为true。所以正确的解决方案是将信号参数从字符串更改为布尔值。如果因为某些原因你不能这样做,那么你需要写

landscape = (value == 'true'); 

就像你现在要做的那样。