字符串从JavaScript传递到Qt/ c++对象
String passing from JavaScript to Qt/C++ object
我被困在Windows上的QtWebKit桥问题上,我跑完了选项。我不知道使用的确切代码,但它就像下面的东西。
c++class MyObject : QWidget {
Q_OBJECT
public:
QString data() const;
void setData(QString);
Q_PROPERTY(QString data READ data WRITE setData)
};
/* ... */
MyObject myObject;
frame->addToJavaScriptWindowObject("myObject", &myObject);
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"。如果我在那个地址查看内存,我看到内存中的完整url(格式化为UTF-32(每个字符4字节)),但无论我尝试(toStdString, toAscii, utf16 -只是为了获得明智的数据)我似乎无法获得/使用整个字符串。
我事件认为也许调试器在耍我,所以我把数据传递给实际需要这些数据的方法(也使用了QString),这一切都可能工作-但遗憾的是没有。
即使我使MyObject::setData Q_INVOKABLE并直接调用setData,我也会得到相同的结果行为:
myObject.setData(url); // Assigns url to C++ object myObject
如果我只是把数据作为文字传递,所有DOES都能正常工作,比如
myObject.setData('10.10.0.1');
或
myObject.data = '10.10.0.1';
我不明白为什么传递一个文字工作,但一个变量不,'url'变量应该是字符串类型。
我有一部分在那里。字符串传递按预期工作。然而,c++对象是嵌入在网页上并包装ActiveX (ActiveQt)对象的。为此,我看到过一些页面,其中创建了一个继承自q网页的类。这里有一个createPlugins方法,它要求QUiLoader为您构造小部件(或者您可以使用Qt Metatype系统)。我的c++对象是注册的。当我在我的WebView(使用setPage)上使用这个自定义网页时,字符串被错误地传递进来。当我禁用调用setPage时,字符串会正确传递。
所以字符串传递工作(在某些条件下)。
我为此创建了一个新问题:Qt Webkit bridge ActiveQt string
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- Qt SQlite无法创建表