2015-08-14 47 views
3

讓我們來考慮下面的代碼片段:無法使用的狀態與ApplicationWindow

ApplicationWindow 
{ 
    /**/ 
    states: State {} 
    /**/ 
} 

運行應用程序時,我得到

Cannot assign to non-existent property "states" 

當使用

ApplicationWindow 
{ 
    /**/ 
    Item { states: State {} } 
    /**/ 
} 

沒有錯誤。爲什麼我不能在ApplicationWindow內使用states

回答

6

我剛剛意識到ApplicationWindow繼承Window繼承QQuickWindow。只有從Item繼承的類型才具有states屬性。

解決方法是使用StateGroup

隨意添加更好的解決方案;)

+2

謝謝,這個作品!不幸的是,這樣做會打破Qt Designer中的狀態支持;它不識別'StateGroup'。 另外,注意'ApplicationWindow'是使用New Project助手創建的Qt Quick項目中的默認根元素,官方的Qt教程建議使用根元素狀態來構建界面(使用Qt Designer),這是一個混亂,許多人用戶將受到衝擊。 –