字符串从JavaScript传递到Qt/C++;对象

字符串从JavaScript传递到Qt/C++;对象,javascript,c++,string,qt,webkit,Javascript,C++,String,Qt,Webkit,我被困在Windows上的一个QtWebKit桥接问题上,我用完了 选项。我没有访问使用的确切代码,但它类似于下面的内容 C++ JavaScript function drop(e) { var url = e.dataTransfer.getData('url'); //alert(url); // Displays url correctly myObject.data = url; // Assigns url to C++ object myObjec

我被困在Windows上的一个QtWebKit桥接问题上,我用完了 选项。我没有访问使用的确切代码,但它类似于下面的内容

C++

JavaScript

function drop(e) {
    var url = e.dataTransfer.getData('url');
    //alert(url);   // Displays url correctly
    myObject.data = url;    // Assigns url to C++ object myObject
}
警报框正确显示字符串值,例如10.10.0.1。 setData上的参数给了我字符串“1”。如果我在该地址查看then内存,我会在内存中看到完整的url(格式为UTF-32(每个字符4个字节)),但无论我做什么尝试(TostString、toAscii、utf16-只是为了获取合理的数据),我似乎都无法获取/使用整个字符串

我认为可能是调试器在捉弄我,所以我将数据传递给实际需要这些数据的方法(它也使用了QString),这一切都可能会起作用,但遗憾的是没有

即使我使MyObject::setData Q_可调用并直接调用setData,我也会得到相同的结果 行为:

myObject.setData(url);  // Assigns url to C++ object myObject
如果我只是以文本的形式传递数据,那么所有的操作都是正确的,比如

myObject.setData('10.10.0.1');


我不明白为什么传递一个文本有效,而传递一个变量无效,“url”变量应该是字符串类型。

。字符串传递按预期工作。但是,C++对象嵌入在网页上,并封装ActiveX(ActiveQT)对象。 为此,我看到了一些页面,其中您创建了一个从QWebPage继承的类。这里有一个createPlugins方法,要求QUiLoader为您构造小部件(或者使用Qt元类型系统)。我的C++对象注册了。 当我在WebView(使用setPage)上使用此自定义网页时,字符串传递错误。当我禁用调用setPage时,字符串正确传递

所以字符串传递是有效的(在某些情况下)

我已经为此创建了一个新版本:

myObject.setData('10.10.0.1');
myObject.data = '10.10.0.1';