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函數
實施的效果爲在加載完成後進行輸出一個定位點。