2014-06-23 72 views
4

在我的應用程序中,我有一個類,它註冊爲QML單身人士。我的目的是收集QML中的值作爲關聯數組並將此數組傳遞給C++。這是類的簡化版本:我註冊類的實例作爲單QML - 將JavaScript關聯數組傳遞給C++

class Config : public QObject 
{ 
Q_OBJECT 
private: 
    Config(QObject *parent = 0); 
public: 
    static Config *instance(); 
    ~Config(); 
    Q_INVOKABLE void sendValue (const QVariantMap &map) { 
    qWarning() << map.size(); 
    } 
} 

這裏:

qmlRegisterSingletonType<Config>("myNS", 1, 0, "Config", config_singletontype_provider); 

在QML文件中的一些地方,我試圖通過JavaScript數組回C++ ;

function sendValue() { 
    var arr = []; 
    arr["key"] = "value"; 
    Config.sendValue(arr);  
} 

但沒有通過。 在C++返回0.可能是我需要一些額外的轉換?

回答

4

好吧,我回答我自己的問題) 文檔不是那麼清楚,但據我所知,Qt JS數組轉換爲QVariantListJS對象QVariantMap 所以在我來說,我只需要創建一個object,not array:

var arr = {};