Webkit是一个开源的浏览器引擎,chrome也使用了作为核心。Qt中对Webkit做了封装,主要有以下几个类:
QWebView :最常用的类,作为一个窗体控件
QWebPage :包含在QWebView中,表示一个Document
QWebFrame :包含在QWebPage中,表示一个Frame
QWebSettings :网页渲染全局设置
QWebHistory :用于浏览的历史记录
WebView 使用 WebPage 来实现页面,WebPage 使用 WebFrame 来实现页面元素
- WebView中两种用来显示内容的方法
setUrl : 比如在使用VS code vue开发中,我在在本地端口生成了页面,然后监听本地端口,掉用QWebView的setUrl(QUrl(http://127.0.0.1:XXXX))就可以了
setContent : 直接将html源码放到QWebView中,以及网页中的元素(如:图片,样式,脚本)就采用“file:/// absolutePath”的方式了。
QWebPage类和QWebView类一样,都用于查看和编辑网页,不同的是,从两者的包含关系上我们可以知道,QWebView可以用于打开多个网页,而里面具体的网页对象就是QWebPage。QWebPage通过mainframe()方法可以得到More QWebView-like functions,如load(), setUrl() 和 setHtml()。
信号与槽:
在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
- linkClicked信号介绍
linkClicked信号能够发送的前提是对应的QWebPage::linkDelegationPolicy被设定为允许链接