QT WebEngine是什么
QT WebEngine是QT提供的一个Web浏览器引擎(基于Chromium),可以将网页内容嵌入到QT程序。
QT WebEngine框架
QT WebEngine分为以下模块:
- QT WebEngine Widgets Module:用于创建基于Widgets的Web应用程序。C++写的,我们接下来重点研究对象。
- QT WebEngine Module:用于创建基于QT Quick的Web应用程序。QML写的,我们应该不用,这里不讨论。
- QT WebEngine Core Module:用于与Chromium交互。是QT WebEngine Widgets Module与QT WebEngine Module共享的公共API。
QT WebEngine Widgets Module
QT WebEngine Widgets Module的组成
上图是QT WebEngine Widgets Module的主要部件的组件。这里我们需要知道一个View与一个Page对应,Page负责整个Web内容主框架。所有的Page都通过一个Profile共享settings, scripts, 和cookies,通过Profile实现各个Page间的隔离。
QT WebEngine Widgets Module如何使用
在QT WebEngine Widgets Module中有些什么类可以使用呢?
Class | description |
---|---|
QWebEngineCertificateError | Information about a certificate error |
QWebEngineContextMenuData | Context data for populating or extending a context menu with actions |
QWebEngineDownloadItem | Information about a download |
QWebEngineFullScreenRequest | Enables accepting or rejecting requests for entering and exiting the fullscreen mode |
QWebEngineHistory | Represents the history of a web engine page |
QWebEngineHistoryItem | Represents one item in the history of a web engine page |
QWebEnginePage | Object to view and edit web documents |
QWebEngineProfile | Web engine profile shared by multiple pages |
QWebEngineScript | Encapsulates a JavaScript program |
QWebEngineScriptCollection | Represents a collection of user scripts |
QWebEngineSettings | Object to store the settings used by QWebEnginePage |
QWebEngineView | Widget that is used to view and edit web documents |
从上表中我们可以看到QT WebEngine Widgets Module中所有类以及他们的作用。
- QWebEngineView对应上图中的View,他是这些类中唯一可以show的,所以我们就知道了QWebEngineView提供了用于查看和编辑网页文件的界面控件。
- QWebEnginePage对应上图中的Page,QWebEnginePage与QWebEngineView有着类似的API,但是QWebEnginePage有更多的成员函数,他得通过QWebEngineView的setPage方法才能显示。
- QWebEngineHistory对应上图中的History,通过QWebEngineHistory对象管理History,而QWebEngineHistory通过QWebEngineHistoryItem管理历史记录中的某一条。
- QWebEnginePage::WebAction这个枚举对应上图中的Action,其中包括32个成员,如Back、Forword、Stop等等。
- QWebEngineProfile对应上图中的Profile,QWebEnginePage通过QWebEngineProfile对象管理Profile,比如设置cachePath。
- QWebEngineSettings对应上图中的Settings,通过QWebEngineSettings对象管理Settings,如字体大小等属性。其实QWebEnginePage和QWebEngineProfile都有可以获取Settings的方法settings,他们返回的指针指向同一地址。
- QWebEngineScriptCollection对应上图中的Script,通过QWebEnginePage和QWebEngineProfile对象的scripts方法都可以获取到他们的QWebEngineScriptCollection,然后我们可以把我们自己的QWebEngineScript对象通过insert加到里面执行。
QT WebEngine Core Module
QT WebEngine Core Module提供了QT WebEngine Widgets Module和QT WebEngine Module共享的API,用于处理为Chromium网络堆栈发出的URL请求以及访问其HTTP cookie。
Class | description |
---|---|
QWebEngineCookieStore | Access to Chromium’s cookies |
QWebEngineUrlRequestInfo | Information about URL requests |
QWebEngineUrlRequestInterceptor | Abstract base class for URL interception |
QWebEngineUrlRequestJob | Represents a custom URL request |
QWebEngineUrlSchemeHandler | Base class for handling custom URL schemes |
上表是QT WebEngine Core Module中所有类,QWebEngineCookieStore对应上图中的Cookie,QWebEngineProfile通过其进行Cookie的操作。