Qt中的QWebView


一、Webkit了解
  Webkit是一個開源的瀏覽器引擎,chrome也使用了作為核心。Qt中對Webkit做了封裝,主要有以下幾個類:
  • QWebView :最常用的類,作為一個窗體控件

  • QWebPage :包含在QWebView中,表示一個Document

  • QWebFrame :包含在QWebPage中,表示一個Frame

  • QWebSettings :網頁渲染全局設置

  • QWebHistory :用於瀏覽的歷史記錄

WebView 使用 WebPage 來實現頁面,WebPage 使用 WebFrame 來實現頁面元素

二、QWebView
  • WebView中兩種用來顯示內容的方法
  1. setUrl : 比如在使用VS code vue開發中,我在在本地端口生成了頁面,然后監聽本地端口,掉用QWebView的setUrl(QUrl(http://127.0.0.1:XXXX))就可以了

  2. setContent : 直接將html源碼放到QWebView中,以及網頁中的元素(如:圖片,樣式,腳本)就采用“file:/// absolutePath”的方式了。

  3. QWebPage類和QWebView類一樣,都用於查看和編輯網頁,不同的是,從兩者的包含關系上我們可以知道,QWebView可以用於打開多個網頁,而里面具體的網頁對象就是QWebPage。QWebPage通過mainframe()方法可以得到More QWebView-like functions,如load(), setUrl() 和 setHtml()。

2.2 QWebView中的信號與槽
 
  • 信號與槽:
    在QT中信號與槽,作為一種非常好用的對象間的通信方式。本質是函數,信號與槽函數能攜帶任意類型、數量的參數。
    且從QOobject 或其子類(例如Qwidget)派生的類都能夠包含信號和槽。當對象改動其狀態時,信號就由該對象發射出去,但是對象並不知道另一端是誰在接收這個信號。實現了信息封裝。槽用於接收信號,是普通的對象成員函數。一個槽也不知道是否有所有信號和自己相連接。一個槽能接收多個信號,一個信號也能連接多個槽。信號也能連接信號。

  • 自定義信號:
    在QT中允許自定義信號,並使用emit()觸發,發射信號。
    自定義信號使用 signals關鍵字。而在PyQt中使用 QtCore.pySignal() 可帶參如pySignal(int) 或者pySignal(str)這樣

  • 槽:
    定義槽函數,普通函數使用slots關鍵字修飾。
    PyQt中,使用@QtCore.pySlot() 裝飾器修飾函數就行,也可以有參數,如@pySlot(int) @pySlot(str)

  • 信號與槽函數鏈接:
    如:mySignal = QtCore.pySignal()
    @pySlot()
    def fun():
        pass
    mySgnal.connect(fun)

  • 發射信號PyQt中:
    mySignal.emit()
    如果帶參,整型:mySignal.emit(2)
    字符串: mySignal.emit('sq')

void back ()
void forward ()
void print ( QPrinter * printer ) const
void reload ()
void stop ()
19 public slots inherited from QWidget
1 public slot inherited from QObject
void iconChanged ()
void linkClicked ( const QUrl & url )
void loadFinished ( bool ok )
void loadProgress ( int progress )
void loadStarted ()
void selectionChanged ()
void statusBarMessage ( const QString & text )
void titleChanged ( const QString & title )
void urlChanged ( const QUrl & url )
1 signal inherited from QWidget
1 signal inherited from QObject
  1. linkClicked信號介紹
    linkClicked信號能夠發送的前提是對應的QWebPage::linkDelegationPolicy被設定為允許鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM