2014-03-05 37 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'); 

就像你現在要做的那樣。