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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Qt文档阅读笔记-QWebView官方解析与实例

發(fā)布時(shí)間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt文档阅读笔记-QWebView官方解析与实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

?

?

背景

官方解析

博主例子


?

背景

最近發(fā)現(xiàn)某Qt項(xiàng)目,出現(xiàn)的效果杠桿的,在看某一小功能的時(shí)候,發(fā)現(xiàn)有個(gè)echart的東西,百度了發(fā)現(xiàn),真的是一個(gè)新大陸,Qt加web編程,賊吉爾可怕。

在此發(fā)現(xiàn)使用QWebengine能做,但本人的編譯器剛好是MSVC2012,貌似要2013以上的版本,才支持,在此使用老的技術(shù),QWebView去做,目前再下一個(gè)Centos,準(zhǔn)備安裝最新版Qt,后期直接在Linux上使用QWebengine。

?

官方解析

QWebView提供Web瀏覽的功能,使用了WebKit瀏覽器內(nèi)核(等會(huì)抓包來(lái)看看)。

如果訪問(wèn)Internet的web,使用load()函數(shù)或setUrl(),訪問(wèn)本地的html網(wǎng)頁(yè)使用setHtml。

QWebView *view = new QWebView(parent);view->load(QUrl("http://qt.nokia.com/"));view->show();

這里還有一系列的信號(hào):

? ? ? ? ? 1. loadStarted()信號(hào):

? ? ? ? ? 2. loadProperss()信號(hào);

? ? ? ? ? 3. loadFinished()信號(hào);

這里有個(gè)關(guān)鍵的東西,page(),返回web page對(duì)象。通過(guò)settings()函數(shù)可以對(duì)web頁(yè)面進(jìn)行修改(指開(kāi)不開(kāi)啟JS這種);

訪問(wèn)某一網(wǎng)站,他會(huì)填充title(),icon()這種屬性。

下面這幅圖給出了QWebView和QWebPage以及QWebFrame之間的關(guān)系

這里可以知道:QWebView依賴于QtGui屬性,如果他使用他,就要用QApplication創(chuàng)建主事件循環(huán)。如果使用QWebPage和QwebFrame直接用QCoreApplication創(chuàng)建主事件循環(huán)即可。

?

?

博主例子

一個(gè)簡(jiǎn)單的瀏覽網(wǎng)頁(yè)的例子:

程序結(jié)構(gòu)如下:

WebViewDemo.pro

#------------------------------------------------- # # Project created by QtCreator 2019-03-22T10:31:26 # #-------------------------------------------------QT += core gui webkitwidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = WebViewDemo TEMPLATE = appSOURCES += main.cpp\widget.cpp \mypage.cppHEADERS += widget.h \mypage.hFORMS += widget.ui

mypage.h

#ifndef MYPAGE_H #define MYPAGE_H#include <QWebPage> #include <QNetworkRequest> #include <QObject>class MyPage : public QWebPage {Q_OBJECT public:MyPage(QObject *object = 0);signals:void loadLink(const QUrl &url);void openLink(const QUrl &url);protected:bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type); };#endif // MYPAGE_H

widget.h

#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QUrl>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected slots:void linkUrl(QUrl url);void openUrl(QUrl url);private:Ui::Widget *ui; };#endif // WIDGET_H

main.cpp

#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }

mypage.cpp

#include "mypage.h"MyPage::MyPage(QObject *object) : QWebPage(object) {}bool MyPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type) {if(type==0){//如果是用戶點(diǎn)擊if(frame!=mainFrame()){ //如果不是在本窗口的連接emit openLink(request.url());//發(fā)送打開(kāi)新連接信號(hào)}else{emit loadLink(request.url());//發(fā)送點(diǎn)擊連接信號(hào)}}return QWebPage::acceptNavigationRequest(frame, request, type); }

widget.cpp

#include "widget.h" #include "mypage.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);MyPage *page = new MyPage;ui->webView->setPage(page);this->setWindowTitle("CSDN IT1995");ui->webView->load(QUrl("http://www.it1995.cn/"));connect(page, SIGNAL(linkClicked(QUrl)), this, SLOT(linkUrl(QUrl)));connect(page, SIGNAL(openLink(QUrl)), this, SLOT(openUrl(QUrl))); }Widget::~Widget() {delete ui; }void Widget::linkUrl(QUrl url) {//qDebug() << url;ui->webView->load(url); }void Widget::openUrl(QUrl url) {//qDebug() << url;ui->webView->load(url); }

widget.ui

?

這個(gè)網(wǎng)站是可以隨意點(diǎn)擊的!

?

抓下包來(lái)分析下:

從這里可以看到不愧是調(diào)用內(nèi)核accept-Language和connection,user-Aget都填充好了!

從user-Agent中的Applewebkit中可以知道的確是webkit,webviewDemo,這個(gè)就有點(diǎn)搞笑了!

?

?

總結(jié)

以上是生活随笔為你收集整理的Qt文档阅读笔记-QWebView官方解析与实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。