https://blog.csdn.net/qq_38255285/article/details/87917887 前序工作
总的就一句吧
//地图初始化
void Phantom::mapInit()
{
QString strMapPath="file:///";
strMapPath+=QCoreApplication::applicationDirPath();
strMapPath+="/map1.html";
qDebug() << strMapPath ;
ui->webview->load(QUrl(strMapPath));
//webengine中的loadfinished函数表示加载完毕,通过其返回值判断是否完成
connect(ui->webview,SIGNAL(loadFinished(bool)) ,this,SLOT(maploadfinish(bool)));//加载地图完成后执行loadFinished函数
}
connect(ui->webview,SIGNAL(loadFinished(bool)) ,this,SLOT(maploadfinish(bool)));主要是加了这一句
信号发出者的指针是ui->webview,就是前文那个ui中的被提升的QFrame,信号是loadFinished(bool),返回类型是boolean;信号接收就是主窗口,接收函数是maploadfinish(bool)
在头文件(.h)中,用于定义信号槽的文本申明
private slots:
void maploadfinish(bool finish); //地图加载完成
在文件(.c)中, 编写函数,如果信号槽中loadFinished(bool)返回为true则给maploadfinish函数输入赋值为true,正好调用true的部分。
void Phantom::maploadfinish(bool finish)
{
if(finish)
{
double lon, lat;
lon = 118.72000;
lat = 32.20100;
QString command = QString("addpoint(%1,%2)").arg(QString::number(lon[i], 'f', 6)).arg(QString::number(lat[i], 'f', 6));
qDebug()<<command;
i->webview->page()->runJavaScript(command);
}
else
{
}
}
还是通过ui->webview->page()->runJavaScript(),被提升的QFrame调用page()->runJavaScript(),括号里面是QString类型,command的值具体是addpoint(118.720000,32.201000),调用了js程序中的addpoint函数
实施的效果为在加载完成后进行输出一个定位点。