2017-08-13 13 views
0

我想在一個qmldir文件中使用多個單例,但它似乎不起作用,我沒有錯誤,但程序無法啓動。如何在一個qmldir文件中放置多個單身人士?

qmldir:

singleton File1 1.0 File.qml 
singleton File2 1.0 File2.qml 

主:

import QtQuick 2.7 
import QtQuick.Controls 2.1 
import '.' 
Window{ 
    visible:true 
    width:640 
    height:480 
    title: qstr("hello world!") 

    Button{ 

     onCliked: File2.test(); 
    } 
} 

File2.qml:

pragma Singleton 
import QtQuick 2.7 
import QtQuick.Controls 2.1 
Item{ 
    signal test; 
    onTest:console.log("File2 received signal"); 
} 

File1.qml:

pragma Singleton 
import QtQuick 2.7 
import QtQuick.Controls 2.1 
Item{ 
    signal test; 
    onTest:console.log("File1 received signal"); 
} 

代碼工作,如果我刪除qmldir第二線,但隨後file2將和undifined

+1

_Multiple Singletons_有點矛盾,不是嗎? – user0042

+0

是的,但是當我尋找一種方法來鏈接qml文件以便能夠發送和接收來自另一個的信號(如上例所示)時,singleton似乎是唯一的解決方案,不知道單件意味着什麼我想如果我可以將它應用到多個文件以將它們鏈接起來會很好,如果我不能這樣做,那麼請告訴我我該怎麼辦? –

+2

多個不同的單例並不矛盾。 – AlexanderVX

回答

1

如果您qmldir文件是完全按照你寫:

Singleton File1 1.0 File.qml 
Singleton File2 1.0 File2.qml 

的錯誤可能位於內,隨着關鍵字是singleton,而不是Singleton

試一下:

singleton File1 1.0 File.qml 
singleton File2 1.0 File2.qml 

但是誤差不應靜默失敗。應該有一些錯誤:

[main.qml] a component declaration requires two or three arguments, but 4 were provided
[qmldir] a component declaration requires two or three arguments, but 4 were provided

//main.qml

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import '.' 

ApplicationWindow { 
    id: window  
    width: 800 
    height: 600 
    visible: true  
    Row { 
     spacing: 3 
     Button { 
      text: 'single1' 
      onClicked: Single.sig() 
     } 

     Button { 
      text: 'signle2' 
      onClicked: Single2.sig() 
     } 
    }  
} 

//singleton.qml

pragma Singleton 
import QtQuick 2.0 
QtObject { 
    signal sig 
    onSig: console.log('Singleton1 Received') 
} 

//singleton2.qml

pragma Singleton 
import QtQuick 2.0 
QtObject { 
    signal sig 
    onSig: console.log('Singelton2 Received') 
} 

// qmldir

singleton Single 1.0 singleton.qml 
singleton Single2 1.0 singleton2.qml 

就像一個魅力。

+0

我寫它的權利,單身人士 –