日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt文档阅读笔记-QWebEngineView及QML WebEngineView

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt文档阅读笔记-QWebEngineView及QML WebEngineView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里主要是最近有給Java Web項目及Qt項目需要混合,自己搞的QtWebEngine沒有問題,而用了項目里面的,就有問題,在此閱讀下官方資料,看看能不能解決這樣莫名其妙的問題,在此記錄下本次的閱讀筆記:

?

QWebEngineView

QWebEngineView提供了widget去查看和編輯web網頁。

使用load()函數去加載一個web頁面,這里會調用GET方法。

使用show函數,展示這個頁面。

QWebEngineView *view = new QWebEngineView(parent); view->load(QUrl("http://qt-project.org/")); view->show();

如果訪問站點,使用setUrl(),如果加載本地html文件使用setHtml()。

當某給網頁被加載的時候loadStarted()信號將會觸發。當某個元素完成加載時會觸發loadProgress()信號,如圖片或者腳本。當加載完成時會觸發loadFinished()信號,此信號帶有給參數,當為true時說明頁面加載完成,當為false時說明相反。

?

page()函數返回web頁面對象的指針。QWebEngineView中包含了QWebEnginePage,并且QWebEnginePage會加載到QWebEngineHistory的上下文中。

?

HTML中的title會被設置到title()屬性中。Icon()保存其圖標或者在iconUrl()中存儲其icon的url鏈接。當這些數據變化時,titileChanged()、iconChanged()、iconUrlChanged()信號將會被觸發。ZoomFactor()屬性將存儲網頁內容的放大和縮小。

?

如果需要自定義上下文菜單,需要繼承contextMenuEvent(),這里可以在pageAction()中設置QMenu,選中文字,復制粘貼等功能都可以通過這個方式進行實現。使用triggerPageAction()進行觸發。

?

這里可以繼承QWebEngineView重寫createWindows()函數,實現點擊后彈出web窗口的功能。

?

這里,個人提供一個簡單的例子,可以跑起來

profile

QT += core gui webenginewidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = WebEngineTest TEMPLATE = appDEFINES += QT_DEPRECATED_WARNINGSSOURCES += main.cpp\Widget.cppHEADERS += Widget.hFORMS += Widget.ui

main.cpp

#include "Widget.h" #include <QApplication> #include <QWebEngineView>int main(int argc, char *argv[]) {QApplication a(argc, argv);//Widget w;//w.show();QWebEngineView view;view.load(QUrl("http://it1995.cn"));view.show();return a.exec(); }

運行截圖如下:

源碼打包下載地址:

https://github.com/fengfanchen/Qt/tree/master/WebEngineTest

?

下面是QML中如何去用

?

WebEngineView QML Type

WebEngineView可以在QML應用程序中的某個區域渲染出一個動態的web網站。

?

初始化Web Engine

在main函數中調用QtWebEngine::initialize()初始化WebEngine,如下代碼:

int main(int argc, char *argv[]){QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QGuiApplication app(argc, argv);QtWebEngine::initialize();QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/main.qml")));return app.exec();}

WebEngineView中,通過url屬性,或loadHtml方法,這里是通過GET方法進行調用,如下代碼:

import QtQuick 2.0import QtQuick.Window 2.0import QtWebEngine 1.0Window {width: 1024height: 750visible: trueWebEngineView {anchors.fill: parenturl: "http://www.qt.io"}}

loadingChanged()信號將會在頁面開始、結束、失敗時觸發。

title屬性中存儲網頁標題,icon屬性存儲網頁圖標,同樣zoomFactor屬性存儲其放縮。

?

certicateError()和WebEngineCertificateError會為錯誤相關的信號。

?

newViewRequested()信號當有新的頁面獨立打卡時觸發。NewViewDestionation屬性存儲那個url將會被打卡。

?

findText()為在網頁上搜索字符串。

setActiveFocusOnPress()為聚焦網頁上的某個元素。

linkHovered()信號是在用戶把鼠標移動到鏈接上的時候就會被觸發。

?

UserScripts屬性存儲用戶的腳本,這個腳本會注入到WebEngineScript中。可以使用runJavaScript()方法進行調用。

?

Web engine view可以獨立的加載不同的配置文件

?

下面是使用WebEngineView的一個小例子

源碼如下:

profile

TEMPLATE = appQT += qml quick webengine CONFIG += c++11SOURCES += main.cppRESOURCES += qml.qrcQML_IMPORT_PATH =QML_DESIGNER_IMPORT_PATH =DEFINES += QT_DEPRECATED_WARNINGSqnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target

main.cpp

#include <QGuiApplication> #include <QQmlApplicationEngine> #include <QtWebEngine>int main(int argc, char *argv[]) {QGuiApplication app(argc, argv);QtWebEngine::initialize();QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/main.qml")));return app.exec(); }

main.qml

import QtQuick 2.5 import QtQuick.Window 2.2 import QtWebEngine 1.0Window {width: 1024height: 750visible: trueWebEngineView {anchors.fill: parenturl: "http:/it1995.cn"} }

程序運行截圖如下:

源碼打包下載地址:

https://github.com/fengfanchen/Qt/tree/master/QMLWebEngineTest

總結

以上是生活随笔為你收集整理的Qt文档阅读笔记-QWebEngineView及QML WebEngineView的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。