qt5.6加載網頁加載完成後進行的操作實施,包含如何在qt中運行JavaScript

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函數

實施的效果爲在加載完成後進行輸出一個定位點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章