2017-04-04 306 views
1

我得到一個運行時錯誤,因爲我剛剛創建了一個新的QML單類型:單例對象的QML運行時錯誤:遞歸地實例化?

qrc:///Components/RunStatus.qml:-1 RunStatus is instantiated recursively 

我還有一個QML單對象,它工作得很好,我比較的兩個,也沒有明顯的差異。

這裏的源RunStatus.qml:

pragma Singleton 
import QtQuick 2.6 
import Components 1.0 

Item { 
    property bool isRunning: false 
    property bool isStopped: !isRunning 
} 

有我qmldir文件的源:

# singleton QML files 
singleton RunStatus 1.0 RunStatus.qml 

我消滅了所有引用的對象,RunStatus和我仍然得到錯誤。但是,當我從qmldir文件中刪除singleton關鍵字時,運行時錯誤消失。

回答

0

從RunStatus.qml刪除以下import聲明:

import Components 1.0 

與宣告單身QML對象會導致遞歸實例化qmldir導入的文件夾。

+0

如果您的單身人士需要在組件中定義的元素,該怎麼辦? –

+0

如果單例需要在組件中定義的元素,則聲明單例的qmldir應該從組件文件夾以外的文件夾導入。 – pixelgrease

+0

更好的方法是將需要導入的東西添加到單獨的qml文件中,並在單例中使用該導入(不包含導入)。 這樣一切正常 –