<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
跨平臺著實花了不少的精力,為了從Qt4.7相容到Qt6.2及後續版本,頭髮掉了不少,僅有的幾根毛所剩無幾,哎,可能這就是程式設計師的命,本人寫Qt程式這麼多年,比較喜歡支援多個Qt版本,尤其是鍾情於支援任意Qt版本+任意系統+任意編譯器,這句話說起來簡單其實實現起來就不容易了,首先你得有個很多版本的測試環境,起碼十幾個Qt環境要的吧,四五種作業系統要的吧,還要安裝各種VS版本免不了的,畢竟win上除了預設的mingw編譯器還有很多人用的是msvc編譯器,這麼一大堆環境折騰下來,沒有個1T硬碟是不夠的,而且官網釋出Qt版本的速度相當快,最慢半年肯定來一個版本,又得測試了,每次釋出一個大的版本,除了常用的windows以外,linux要測試吧,而且現在還多出來一些國產linux系統比如deepin new start UOS之類的,也要試試吧,哎呀好累。
體驗地址:https://pan.baidu.com/s/15ZKAlptW-rDcNq8zlzdYLg 提取碼:uyes 檔名:bin_map.zip
國內站點:https://gitee.com/feiyangqingyun
國際站點:https://github.com/feiyangqingyun
#include "webview.h" #include "qevent.h" #include "qdatetime.h" #include "qdebug.h" #ifdef webkit #include <QtWebKit> #if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) #include <QtWebKitWidgets> #endif #elif webengine #include <QtWebEngineWidgets> #elif webie #include <QAxWidget> #elif webminiblink #include "miniblink.h" #endif #define TIMEMS qPrintable(QTime::currentTime().toString("HH:mm:ss zzz")) WebView::WebView(QWidget *parent) : QObject(parent) { //初始化web控制元件設定資訊 WebView::initWebSetting(); //初始化通用地圖資料 WebHelper::initMapData(); //資料互動類 webJsData = new WebJsData(this); connect(webJsData, SIGNAL(receiveDataFromJs(QString, QVariant)), this, SIGNAL(receiveDataFromJs(QString, QVariant))); #ifdef webkit webView = new QWebView(parent); #elif webengine webView = new QWebEngineView(parent); //設定對應的通訊通道 QWebChannel *channel = new QWebChannel(this); channel->registerObject("objName", webJsData); webView->page()->setWebChannel(channel); #elif webie webView = new QAxWidget(parent); //註冊瀏覽器控制元件 webView->setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}"); //不顯示警告資訊 webView->setProperty("DisplayAlerts", false); //不顯示卷軸 webView->setProperty("DisplayScrollBars", true); #elif webminiblink webView = new miniblink(parent); #endif //關聯載入完成訊號 #if (defined webkit) || (defined webengine) connect(webView->page(), SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); connect(webView->page(), SIGNAL(loadFinished(bool)), this, SIGNAL(loadFinished(bool))); #elif webminiblink connect(webView, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); connect(webView, SIGNAL(loadFinished(bool)), this, SIGNAL(loadFinished(bool))); connect(webView, SIGNAL(receiveDataFromJs(QString, QVariant)), this, SIGNAL(receiveDataFromJs(QString, QVariant))); #endif //設定沒有右鍵選單 #if (defined webkit) || (defined webengine) || (defined webie) || (defined webminiblink) webView->setContextMenuPolicy(Qt::NoContextMenu); #endif //安裝事件過濾器 #ifdef webminiblink webView->installEventFilter(this); #endif } void WebView::initWebSetting() { //全域性設定只需要設定一次就行 static bool isInit = false; if (!isInit) { isInit = true; QString webcore = "other"; #ifdef webkit webcore = "webkit"; QWebSettings *webSetting = QWebSettings::globalSettings(); webSetting->setAttribute(QWebSettings::JavascriptEnabled, true); webSetting->setAttribute(QWebSettings::PluginsEnabled, true); webSetting->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); #elif webengine webcore = "webengine"; QWebEngineSettings *webSetting = QWebEngineProfile::defaultProfile()->settings(); webSetting->setAttribute(QWebEngineSettings::JavascriptEnabled, true); webSetting->setAttribute(QWebEngineSettings::PluginsEnabled, true); webSetting->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true); #elif webie webcore = "ie"; #elif webminiblink webcore = "miniblink"; #endif qDebug() << TIMEMS << QString("init webview ok, core: %1").arg(webcore); } } bool WebView::eventFilter(QObject *watched, QEvent *event) { //測試發現miniblink核心(其他核心正常),網頁中的右鍵有訊息會傳給父類別 if (event->type() == QEvent::MouseButtonPress) { return true; } return QObject::eventFilter(watched, event); } void WebView::setLayout(QLayout *layout) { //把控制元件加入到佈局 #if (defined webkit) || (defined webengine) || (defined webie) || (defined webminiblink) layout->addWidget(webView); #endif } void WebView::setVisible(bool visible) { #if (defined webkit) || (defined webengine) || (defined webie) || (defined webminiblink) webView->setVisible(visible); #endif } void WebView::setBgColor(const QColor &color) { #if (defined webkit) || (defined webie) webView->setStyleSheet(QString("background:%1;").arg(color.name())); #elif (defined webengine) webView->page()->setBackgroundColor(color); #elif (defined webminiblink) webView->setBgColor(color); #endif } void WebView::loadFinished() { #ifdef webkit webView->page()->mainFrame()->addToJavaScriptWindowObject("objName", webJsData); #endif } void WebView::load(const QString &url, const QString &html, const QString &baseUrl) { //如果存在網址則優先直接載入網址 if (!url.isEmpty()) { #if (defined webkit) || (defined webengine) webView->load(QUrl(url)); #elif webie webView->dynamicCall("Navigate(const QString&)", url); #elif webminiblink webView->load(url); #endif } else { #if (defined webkit) || (defined webengine) webView->setHtml(html, QUrl(baseUrl)); #elif webminiblink webView->setHtml(html, baseUrl); #endif } } void WebView::runJs(const QString &js) { if (js.isEmpty()) { return; } #ifdef webkit webView->page()->mainFrame()->evaluateJavaScript(js); #elif webengine webView->page()->runJavaScript(js); #elif webminiblink webView->runJs(js); #endif }
以上就是Qt編寫地圖之實現跨平臺功能的詳細內容,更多關於Qt地圖 跨平臺的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45