1. 程式人生 > >QML開發簡單瀏覽器(載入H5)

QML開發簡單瀏覽器(載入H5)

QML開發瀏覽器以及載入HTML5頁面,主要利用QML的WebEngineView可實現對網頁的載入。

其程式碼如下:

import QtQuick 2.4
import QtQuick.Layouts 1.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtWebEngine 1.1

Rectangle {
    id: root

    width: 800
    height: 600

    Rectangle {
        id: edit_area
        width: parent.width
        height: 70
        anchors {
            left: parent.left
            right: parent.right
        }
        color: "#E4EEF9"

        Button {
            id: goBack_click
            anchors {
                left: parent.left
                leftMargin: 5
                verticalCenter: edit_area.verticalCenter
            }
            width: 30
            height: url_edit.height
            property color bgColor: webView.canGoBack?"blue":"gray"
            style: ButtonStyle {
                background: Rectangle {
                    anchors.fill: parent
                    color: goBack_click.bgColor
                    radius: width/2
                }
                label: Label {
                    text: "<-"
                    font.pixelSize: 20
                }
            }
            onClicked: {
                webView.goBack()
            }
        }
        Button {
            id: goForward_click
            anchors {
                left: goBack_click.right
                leftMargin: 2
                verticalCenter: edit_area.verticalCenter
            }
            width: 30
            height: url_edit.height
            property color bgColor: webView.canGoForward?"blue":"gray"
            style: ButtonStyle {
                background: Rectangle {
                    anchors.fill: parent
                    color: goForward_click.bgColor
                    radius: width/2
                }
                label: Label {
                    text: "->"
                    font.pixelSize: 20
                }
            }
            onClicked: {
                webView.goForward()
            }
        }

        TextField {
            id: url_edit
            width: parent.width-150
            height: 27
            anchors {
                left: goForward_click.right
                leftMargin: 5
                rightMargin: 80
                verticalCenter: parent.verticalCenter
            }
            placeholderText: qsTr("請輸入網址")
            focus: true
            font.pixelSize: 16
        }

        Button {
            id: enter_click
            anchors {
                left: url_edit.right
                leftMargin: 5
                verticalCenter: edit_area.verticalCenter
            }
            width: 60
            height: url_edit.height
            style: ButtonStyle {
                background: Rectangle {
                    anchors.fill: parent
                    color: "blue"
                    radius: 5
                }
                label: Label {
                    text: "go>>>"
                    font.pixelSize: 20
                }
            }
            onClicked: {
                webView.url = "https://" + url_edit.text
                url_edit.text = webView.url
            }
        }
        Keys.onReturnPressed: {
            webView.url = "https://" + url_edit.text
            url_edit.text = webView.url
        }
    }

    WebEngineView {
        id: webView
        anchors {
            top: edit_area.bottom
            left: parent.left
            right: parent.right
            bottom: parent.bottom
            margins: 1
        }
        //url: "https://www.baidu.com"
        smooth: true
        visible: true
        onNewViewRequested: request.openIn(webView)

        onUrlChanged: {
            url_edit.text = webView.url
        }
    }
}

當給webView的url賦值為"https://www.baidu.com"時(即輸入網址出輸入:www.baidu.com),即可加載出百度的首頁。
效果如下:

(上圖為從百度首頁點選新聞後的效果)

※在Windows上可以順利開發出簡單瀏覽器,但是在Linux和MaxOSX上,需要注意的是:

1.應用程式的搜尋庫路徑中一定要存在Qt5WebEngineCore庫,在Linux上為QtWebEngineCore.so動態庫,在MacOSX上為QtWebEngineCore.framework
2.一定要存在QtWebEnginePrecess的可執行程式,在MacOSX上為QtWebEnginePrecess.app,此時要注意,QtWebEnginePrecess.app以及app中的QtWebEnginePrecess二進位制都必須要有執行許可權,否則應用程式是載入不出頁面的。
3.一定要將Qt的translations資料夾下的qtwebengine_locales資料夾放到應用程式的相應位置中,否則也是載入不出頁面的。此處注意:Mac下用macdeployqt進行部署包後,其qtwebengine_locales資料夾會自動放在包的/Frameworks/QtWebEngineCore.framework/Versions/5/Resources/qtwebengine_locales下,但是在Linux下進行打包時,一定要記得該資料夾。
4.要將Qt庫下的resources資料夾下的檔案拷貝到應用程式中,其中包括:icudtl.dat、qtwebengine_resources.pak、qtwebengine_resources_100p.pak、qtwebengine_resources_200p.pak,MaxOSX用macdeployqt會自動放到/Frameworks/QtWebEngineCore.framework/Versions/5/Resources下,Linux下手動拷貝吧。
5.最好將其相關的動態庫也拷貝過去,包括QtWebEngine以及QtWebChannel,涉及到頁面的通訊以及載入相關,以免出現么蛾子^_^.

——————————————————————————————————————————————————————————


希望有興趣的朋友可以和我進行交流學習,關注我的公眾號,搜尋【三個程式設計師】進行關注 ^-^

——————————————————————————————————————————————————————————


相關推薦

QML開發簡單瀏覽器載入H5

QML開發瀏覽器以及載入HTML5頁面,主要利用QML的WebEngineView可實現對網頁的載入。 其程式碼如下: import QtQuick 2.4 import QtQuick.Layouts 1.2 import QtQuick.Controls 1.4 imp

pyqt5 簡單瀏覽器改動一部分

from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtWebEngineWidgets import *import sysclass Main

Python開發簡單爬蟲---爬取百度百科頁面數據

class 實例 實例代碼 編碼 mat 分享 aik logs title 一、開發爬蟲的步驟 1.確定目標抓取策略: 打開目標頁面,通過右鍵審查元素確定網頁的url格式、數據格式、和網頁編碼形式。 ①先看url的格式, F12觀察一下鏈接的形式;② 再看目標文本信息的

ArcEngine10.2設計與開發課程學習作業一——地圖、圖層載入及屬性訪問

先說一句,我是新手,剛註冊的CSDN,剛學的C#和engine,剛寫的文章。下面的程式碼質量肯定是經不住的,慢慢來,相信有很多和我一樣的未入門級的同胞,沒事的,都是這麼一竅不通過來的啦,我也是斷斷續續折騰了好幾天搞出來的。踩了賊多坑,也都是很**的坑,建議還是瞭解一下控制元件和類的功能實現原理等等,

ArcEngine10.2設計與開發課程學習作業四——實現地圖的簡單渲染和唯一值渲染

所有習題材料:連結:HTTPS://pan.baidu.com/s/1oiylGi6IEgndYO2j9_oQnQ  提取碼:jp3r  複製這段內容後開啟百度網盤手機應用程式,操作更方便哦 本題EXE:連結:HTTPS://pan.baidu.com/s/10_buC4K1

Android開發 - 掌握ConstraintLayout十一複雜動畫!如此簡單

介紹 本系列我們已經介紹了ConstraintLayout的基本用法。學習到這裡,相信你已經熟悉ConstraintLayout的基本使用了,如果你對它的用法還不瞭解,建議您先閱讀我之前的文章。 使用ConstraintLayout建立動畫的基本思想是我們建立兩個不同的佈局,每個佈局有其不同的約束,從而我

讓我們開發一個瀏覽器

讓我們開發一個瀏覽器(一)實現了在一個標籤中跳轉的建議瀏覽器,接下來新增一些功能,如位址列、多標籤、前進、後退、重新整理... 實現效果如下: 原始碼如下: from PyQt5.QtCore import QUrl, pyqtSignal, Qt from PyQt5.QtGui

讓我們開發一個瀏覽器

設計介面 開啟Qt設計師,新建一個Main Window,移除選單欄和狀態列,如下圖: 拖入一個Table Widget,MainWindow佈局設定為網格佈局,為了美觀,邊距都設定為0,如下圖:   寫程式碼 使用pyuic5命令將ui檔案裝成py檔案,生成完成

Android模組化和元件化開發簡單理解

模組化和元件化可以理解為同一個概念: 將一個app分成多個模組,每個模組都是一個元件(module),開發過程中讓這些元件相互依賴或者單獨除錯某個元件。在釋出的時候將這些元件合併成一個apk。 Android元件化我的理解是 application與library之間相互

eclipse載入jdbc驅動開發web程式mac電腦

今天給大家介紹一下mac電腦的eclipse如何載入jdbc驅動,我使用的是mysql資料庫(mac版本mysql比較好安裝),首先需要準備jdbc驅動,可以在https://dev.mysql.com/downloads/connector/j/進行下載,注意:進入頁面是 我們可以看到,

WebSphere MQ Java 應用開發簡單例項上篇:客戶端模式開發client mode和binding mode)

1-背景知識 IBM MQ支援多種語言開發,本文主要是考慮Java應用開發,MQ提供了相關的Java類庫,可以很方便整合到Java應用中。 IBM MQ Java相關類庫允許Java應用直接與佇列管理器互動,或者連線MQ伺服器和客戶端進行互動。 類庫主要有

Java-簡單加密亦或

nextline 字符轉換 lin toc 16px 進行 accept col sta 1 import java.net.PasswordAuthentication; 2 import java.util.Scanner; 3 4 public class

微信小程序的開發環境搭建Windows版本

block 項目目錄 mar 應用 images 想要 log 點擊 體系 前言: 小程序是指微信公眾平臺小程序,小程序可以幫助開發者快速的開發小程序,小程序可以在微信內被便捷地獲取和傳播;是一種不需要下載安裝即可使用的應用小程序,和原有的三種公眾號是並行的體系

Android平臺Camera實時濾鏡實現方法探討(十)--代碼地址以及簡單介紹20160118更新

div iss 將在 spa 方法 target 用途 net dsm 簡單做了個相機和圖片編輯模塊,時間原因非常多功能還沒有做。尚有BUG,見諒,將在以後抽時間改動 代碼地址 PS:請點個Star^-^ -----------------------

Java 開發環境配置Windows篇

window系統 jar 下載jdk src 編輯 .html 系統變量 輸出 要點 window系統安裝java 下載JDK 首先我們需要下載java開發工具包JDK,下載地址:http://www.oracle.com/technetwork/java/javase

BZOJ 4066 簡單KD樹

element space while rebuild 鏈接 main query [1] line 【題目鏈接】 http://www.lydsy.com/JudgeOnline/problem.php?id=4066 【題目大意】   要求維護矩陣內格子

用Swing開發GUI程序基礎知識

java基礎 GUI(Graphics User Interface)圖形用戶界面,可以讓用戶看著界面操作,所以要比控制臺程序更加直觀,可以提供更加豐富的功能。 在Java中,GUI操作的支持API,一般保存在java.awt和javax.swing包中,但一般情況我們選擇javax.swin

AVR開發 Arduino方法附二 故障排除:燒錄引導程序

開發 沒有響應 image left 響應 asp 故障 引導 排除   在“內存子系統”一章中我們曾提到,Arduino UNO R3開發板上的ATMega328P有0.5KB的Flash空間用於引導程序;因為有引導程序的支持,Arduino可以使用串口上傳程序而無需編程

面向連接的Socket Server的簡單實現簡明易懂

nta on() img == con 線程關閉 sse 每一個 sockaddr http://www.cnblogs.com/worldtraveler/p/4685977.html 一、基本原理 有時候我們需要實現一個公共的模塊,需要對多個其他的模塊提供服務,最常用

PopupWindow的簡單使用結合RecyclerView

comment lis true 定義 www pdo android中 click pup Android彈窗: 在Android中彈出式菜單(以下稱彈窗)是使用十分廣泛一種菜單呈現的方式,彈窗為用戶交互提供了便利。關於彈窗的實現大致有以下兩種方式AlertDia