91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt多瀏覽器內核怎么寫

發布時間:2021-12-15 13:37:01 來源:億速云 閱讀:338 作者:iii 欄目:互聯網科技

本篇內容主要講解“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);
}

二、功能特點

  1. 同時支持在線地圖和離線地圖兩種模式。

  2. 同時支持webkit內核、webengine內核、IE內核。

  3. 支持設置多個標注點,信息包括名稱、地址、經緯度。

  4. 可設置地圖是否可單擊、拖動、鼠標滾輪縮放。

  5. 可設置協議版本、秘鑰、主題樣式、中心坐標、中心城市、地理編碼位置等。

  6. 可設置地圖縮放比例和級別,縮略圖、比例尺、路況信息等控件的可見。

  7. 支持地圖交互,比如鼠標按下獲取對應位置的經緯度。

  8. 支持查詢路線,可設置起點位置、終點位置、路線模式、路線方式、路線方案(最少時間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。

  9. 可顯示點線面工具,可直接在地圖上劃線、點、矩形、圓形等。

  10. 可設置行政區劃,指定某個城市區域繪制圖層,在線地圖自動輸出行政區劃邊界點集合到js文件給離線地圖使用。

  11. 可靜態或者動態添加多個覆蓋物。支持點、折線、多邊形、矩形、圓形、弧線、點聚合等。

  12. 函數接口友好和統一,使用簡單方便,就一個類。

  13. 支持js動態交互添加點、刪除點、清空點、重置點,不需要刷新頁面。

  14. 支持任意Qt版本、任意系統、任意編譯器。

三、效果圖

Qt多瀏覽器內核怎么寫

到此,相信大家對“Qt多瀏覽器內核怎么寫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

qt
AI

庆云县| 望都县| 灌南县| 邹城市| 通城县| 汽车| 宁阳县| 武安市| 武穴市| 永寿县| 进贤县| 祁东县| 余干县| 柘荣县| 沛县| 尚志市| 丰宁| 弥勒县| 宜阳县| 青浦区| 湾仔区| 桑日县| 江山市| 象州县| 乡宁县| 老河口市| 阳城县| 德格县| 保德县| 四川省| 高尔夫| 定远县| 齐河县| 宾阳县| 连州市| 阳东县| 正阳县| 美姑县| 眉山市| 保康县| 临汾市|