2013-07-09 30 views
1

我有一个QVariantMap,我想通过一个信号传递给Javascript。将QVariantMap传递给Javascript(QtWebkit)

C++:

signals: 
    void mysignal(QVariantMap map); 


QVariantMap map; 
map.insert("id", 54); 
emit mysignal(map); 

JS:

mybinding.mysignal.connect(this, function(map) { 
    alert("Map: " + map); 
}); 

现在警报只是显示Map:。 有人能告诉我我做错了什么吗?

回答

0

研究发现,通过QVariant作品传递:

C++:

signals: 
    void mysignal(QVariant map); 



QVariantMap map; 
map.insert("id", 54); 
emit mysignal(QVariant::fromValue(map)); 

为什么不绑定工作只能这样?我不知道。

1
mybinding.mysignal.connect(this, function(map) { 
    alert("Map: " + map); 
}); 

您映射的是一个对象(QVariantMap)。所以,如果你婉访问值,你应该使用

mybinding.mysignal.connect(this, function(map) { 
    alert("Map_ID: " + map.id); 
}); 

这给你一个警告信息,表明54