使用 QObject::connect(view, &QWebEngineView::loadFinished, [&](bool ok) { if (ok) { // 获取页面的 QWebChannel 对象 qDebug() << "ok."; QWebChannel *channel = new QWebChannel(view->page()); // 注册一个 C++ 对象到 QWebChannel 中 channel->registerObject(QStringLiteral("qtObject"), view); // 将 QWebChannel 对象注入到页面中 view->page()->setWebChannel(channel); // 调用 JavaScript 函数传递经纬度参数 QString latitude = "39.90923"; QString longitude = "116.397428"; QString script = QString("setLocation(%1, %2);").arg(latitude, longitude); view->page()->runJavaScript(script);代码传递经纬度给JavaScript 高德在线地图。不能成功加载地图,程序崩溃
时间: 2024-02-14 07:31:09 浏览: 125
根据你提供的代码,问题可能出在加载地图和调用 JavaScript 函数之间。这可能是因为地图页面还没有完全加载完成,就尝试调用 JavaScript 函数。
你可以尝试将调用 JavaScript 函数的代码放在一个单独的函数中,并在页面加载完成后再调用该函数。这样可以确保页面已经完全加载并准备好与 JavaScript 交互。
以下是修改后的示例代码:
```cpp
#include <QApplication>
#include <QWebEngineView>
#include <QWebChannel>
#include <QDebug>
// 定义一个函数,用于传递经纬度参数给 JavaScript
void setMapLocation(QWebEngineView *view)
{
QString latitude = "39.90923";
QString longitude = "116.397428";
QString script = QString("setLocation(%1, %2);").arg(latitude, longitude);
view->page()->runJavaScript(script);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWebEngineView *view = new QWebEngineView();
view->load(QUrl("qrc:/map.html"));
QObject::connect(view, &QWebEngineView::loadFinished, [&](bool ok) {
if (ok) {
QWebChannel *channel = new QWebChannel(view->page());
channel->registerObject(QStringLiteral("qtObject"), view);
view->page()->setWebChannel(channel);
// 在页面加载完成后调用函数传递经纬度参数
setMapLocation(view);
} else {
qDebug() << "Failed to load the map page.";
}
});
view->show();
return app.exec();
}
```
这样修改后,当地图页面加载完成后,会调用 setMapLocation() 函数来传递经纬度参数给 JavaScript。
希望这次的修改能够解决你的问题。如果你还有其他疑问,请随时提问。
阅读全文