您好,登錄后才能下訂單哦!
本篇內容主要講解“Qt多瀏覽器內核怎么寫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Qt多瀏覽器內核怎么寫”吧!
下面是部分代碼:
//公用初始化瀏覽器控件配置 void WebHelper::initWebSetting() { //全局配置只需要設置一次就行 static bool isInit = false; if (!isInit) { isInit = true; #ifdef webkit QWebSettings *webSetting = QWebSettings::globalSettings(); webSetting->setAttribute(QWebSettings::JavascriptEnabled, true); webSetting->setAttribute(QWebSettings::PluginsEnabled, true); webSetting->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); #elif webengine QWebEngineSettings *webSetting = QWebEngineSettings::globalSettings(); webSetting->setAttribute(QWebEngineSettings::JavascriptEnabled, true); webSetting->setAttribute(QWebEngineSettings::PluginsEnabled, true); webSetting->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true); #endif } } //通用瀏覽器組件加載 void frmMapBoundary::loadMap(bool tool) { QString content; QString fileName = QString("%1/map_web.html").arg(AppPath); QString url = "file:///" + fileName; baidu->reset(); baidu->setMapZoom(10); baidu->setShowOverlayTool(tool); //設置默認的中心點坐標,建議采用中心點坐標的方式 baidu->setMapCenterPoint("121.414,31.1828"); //如果采用加載內容方式則需要先設置不存儲文件 //ie內核以及在linux上需要用load的方式加載 //發現 Qt5.5 webkit 也需要用文件加載 #ifdef savehtmlfile baidu->setSaveFile(true); #else baidu->setSaveFile(false); #endif baidu->setFileName(fileName); content = baidu->newMap(); //下面為兩種方式加載網頁,如果內容為空則加載網頁文件否則加載內容 //一般為了保密建議加載內容,這樣看不到生成的網頁文件 //可能在linux上的webkit內核需要用load的方式加載 if (baidu->getSaveFile()) { #if (defined webkit) || (defined webengine) webView->load(QUrl(url)); #elif webie webView->dynamicCall("Navigate(const QString&)", url); #endif } else { QUrl baseUrl(QString("%1/").arg(AppPath)); #if (defined webkit) || (defined webengine) webView->setHtml(content, baseUrl); #endif } } //通用數據交互類 //需要自定義繼承自QObject的類來接收QWebEngineView交互數據,不然會打印很多煩人的信息 class WebJsData : public QObject { Q_OBJECT public: static WebJsData *Instance(); explicit WebJsData(QObject *parent = 0); public slots: //定義兩個參數,這樣就涵蓋了所有的情況 type表示類型相當于唯一標識 void receiveData(const QString &type, const QVariant &data); signals: void receiveDataFromJs(const QString &type, const QVariant &data); }; WebJsData *WebJsData::Instance() { static WebJsData self; return &self; } WebJsData::WebJsData(QObject *parent) { } void WebJsData::receiveData(const QString &type, const QVariant &data) { //可以在這里重新梳理好再發出去信號 emit receiveDataFromJs(type, data); }
同時支持在線地圖和離線地圖兩種模式。
同時支持webkit內核、webengine內核、IE內核。
支持設置多個標注點,信息包括名稱、地址、經緯度。
可設置地圖是否可單擊、拖動、鼠標滾輪縮放。
可設置協議版本、秘鑰、主題樣式、中心坐標、中心城市、地理編碼位置等。
可設置地圖縮放比例和級別,縮略圖、比例尺、路況信息等控件的可見。
支持地圖交互,比如鼠標按下獲取對應位置的經緯度。
支持查詢路線,可設置起點位置、終點位置、路線模式、路線方式、路線方案(最少時間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。
可顯示點線面工具,可直接在地圖上劃線、點、矩形、圓形等。
可設置行政區劃,指定某個城市區域繪制圖層,在線地圖自動輸出行政區劃邊界點集合到js文件給離線地圖使用。
可靜態或者動態添加多個覆蓋物。支持點、折線、多邊形、矩形、圓形、弧線、點聚合等。
函數接口友好和統一,使用簡單方便,就一個類。
支持js動態交互添加點、刪除點、清空點、重置點,不需要刷新頁面。
支持任意Qt版本、任意系統、任意編譯器。
到此,相信大家對“Qt多瀏覽器內核怎么寫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。