跳转到正文

class QCefView

class QCefView
: public QWidget

表示 CEF 浏览器视图

总结

成员描述
public QCefView(const QString & url, const QCefSetting * setting, QWidget * parent, Qt::WindowFlags f)QCefView 有参构造函数
public QCefView(QWidget * parent, Qt::WindowFlags f)QCefView 有参构造函数
public ~QCefView()QCefView 析构函数
public void addLocalFolderResource(const QString & path, const QString & url, int priority)添加具有本地 Web 资源目录的 url 映射项
public void addArchiveResource(const QString & path, const QString & url, const QString & password, int priority)使用包含 Web 资源的本地存档 (.zip) 文件添加 url 映射项
public int browserId()获取浏览器 ID
public void navigateToString(const QString & content)导航到内容
public void navigateToUrl(const QString & url)导航到网址
public bool browserCanGoBack()检查浏览器是否可以返回
public bool browserCanGoForward()检查浏览器是否可以前进
public void browserGoBack()要求浏览器返回
public void browserGoForward()要求浏览器前进
public bool browserIsLoading()检查浏览器是否正在加载
public void browserReload()要求浏览器重新加载
public void browserStopLoad()要求浏览器停止加载
public bool triggerEvent(const QCefEvent & event)触发主框架的事件
public bool triggerEvent(const QCefEvent & event, qint64 frameId)触发指定frame的事件
public bool broadcastEvent(const QCefEvent & event)为所有frame广播事件
public bool responseQCefQuery(const QCefQuery & query)响应 QCefQuery 请求
public bool executeJavascript(qint64 frameId, const QString & code, const QString & url)在指定的frame中执行javascript代码,此方法不报告javascript的结果。要获取 javascript 执行的结果,请使用executeJavascriptWithResult
public bool executeJavascriptWithResult(qint64 frameId, const QString & code, const QString & url, const QString & context)在指定的frame中执行javascript代码,结果将通过reportJavascriptResult 信号发送
public bool setPreference(const QString & name, const QVariant & value, const QString & error)设置此浏览器的首选项
public void setDisablePopupContextMenu(bool disable)设置是否禁用弹出浏览器的上下文菜单
public bool isPopupContextMenuDisabled()获取是否禁用弹出浏览器的上下文菜单
public bool hasDevTools()检测此浏览器是否打开了devtools
public void showDevTools()打开 devtools 对话框
public void closeDevTools()关闭 devtools 对话框
public void setEnableDragAndDrop(bool enable)设置是否启用拖拽
public bool isDragAndDropEnabled() const获取是否启用拖拽
public void setFocus(Qt::FocusReason reason)请参考 QWidget::setFocus
public QVariant inputMethodQuery(Qt::InputMethodQuery query) const请参考QWidget::inputMethodQuery
public void render(QPainter * painter)将视图内容渲染到目标 painter
protected virtual QCefView*onNewBrowser(qint64 sourceFrameId, const QString & url, const QString & name, QCefView::CefWindowOpenDispositiontargetDisposition, QRect & rect,QCefSetting & settings)在创建新浏览器之前调用(仅适用于由非JavaScript创建的浏览器)
protected virtual bool onNewPopup(qint64 frameId, const QString & targetUrl, QString & targetFrameName, QCefView::CefWindowOpenDispositiontargetDisposition, QRect & rect,QCefSetting & settings, bool & disableJavascriptAccess)在创建弹出式浏览器之前调用(仅用于由 JavaScript 创建的浏览器)
protected virtual void onNewDownloadItem(const QSharedPointer< QCefDownloadItem > & item, const QString & suggestedName)需要对新下载项的调用。保留对下载项的引用并调用 QCefDownloadItem::start 方法以允许并启动下载,忽略下载项以禁止下载
protected virtual void onUpdateDownloadItem(const QSharedPointer< QCefDownloadItem > & item)在更新下载项时调用。 若要获取QCefDownloadItem::start的方法,必须在 newDownloadItem 方法中调用
protected virtual bool onRequestCloseFromWeb()在来自 web 的关闭请求时调用
protected void paintEvent(QPaintEvent * event)请参考 QWidget::paintEvent
protected void inputMethodEvent(QInputMethodEvent * event)请参考 QWidget::inputMethodEvent
protected void showEvent(QShowEvent * event)请参考 QWidget::showEvent
protected void hideEvent(QHideEvent * event)请参考 QWidget::hideEvent
protected void focusInEvent(QFocusEvent * event)请参考 QWidget::focusInEvent
protected void focusOutEvent(QFocusEvent * event)请参考 QWidget::focusOutEvent
protected void resizeEvent(QResizeEvent * event)请参考 QWidget::resizeEvent
protected void keyPressEvent(QKeyEvent * event)请参考 QWidget::keyPressEvent
protected void keyReleaseEvent(QKeyEvent * event)请参考 QWidget::keyReleaseEvent
protected void mouseMoveEvent(QMouseEvent * event)请参考 QWidget::mouseMoveEvent
protected void mousePressEvent(QMouseEvent * event)请参考 QWidget::mousePressEvent
protected void mouseReleaseEvent(QMouseEvent * event)请参考 QWidget::mouseReleaseEvent
protected void wheelEvent(QWheelEvent * event)请参考 QWidget::wheelEvent
protected void contextMenuEvent(QContextMenuEvent * event)请参考 QWidget::contextMenuEvent
{signal} public void loadingStateChanged(int browserId, bool isLoading, bool canGoBack, bool canGoForward)加载状态更改时调用
{signal} public void loadStart(int browserId, qint64 frameId, bool isMainFrame, int transition_type)在加载开始时被调用
{signal} public void loadEnd(int browserId, qint64 frameId, bool isMainFrame, int httpStatusCode)在加载结束时被调用
{signal} public void loadError(int browserId, qint64 frameId, bool isMainFrame, int errorCode, const QString & errorMsg, const QString & failedUrl)由于错误导致加载失败时被调用
{signal} public void draggableRegionChanged(const QRegion & draggableRegion, const QRegion & nonDraggableRegion)在可拖动区域更改时调用
{signal} public void addressChanged(qint64 frameId, const QString & url)在网址更改时被调用
{signal} public void titleChanged(const QString & title)网站标题更改时被调用
{signal} public void faviconURLChanged(const QStringList & urls)网站图标地址更改时被调用
{signal} public void fullscreenModeChanged(bool fullscreen)在全屏模式更改时被调用
{signal} public void statusMessage(const QString & message)状态消息更改时被调用
{signal} public void consoleMessage(const QString & message, int level)从 Web 内容调用控制台消息
{signal} public void loadingProgressChanged(double progress)加载进度更改时调用
{signal} public void cefQueryRequest(int browserId, qint64 frameId, const QCefQuery & query)在新的 QCefQuery 请求上被调用
{signal} public void invokeMethod(int browserId, qint64 frameId, const QString & method, const QVariantList & arguments)在从 Web 内容调用方法请求时调用(Javascript)
{signal} public void reportJavascriptResult(int browserId, qint64 frameId, const QString & context, const QVariant & result)在返回 executeJavascriptWithResult 执行的 javascript 的结果时进行调用
{signal} public void nativeBrowserCreated(QWindow * window)在创建原生浏览器窗口后调用。不适用于 OSR 模式
{slot} public inline void setFocus()请参考QWidget::setFocus
enum CefWindowOpenDisposition表示 CEF 弹出窗口的打开配置
private QScopedPointer< QCefViewPrivate > d_ptr

Members


public QCefView(const QString & url, const QCefSetting * setting, QWidget * parent, Qt::WindowFlags f)

QCefView 有参构造函数

参数

  • url 目标网址

  • setting QCefSetting 实例

  • parent 父对象


public QCefView(QWidget * parent, Qt::WindowFlags f)

QCefView 有参构造函数

参数

  • parent 父对象

public ~QCefView()

QCefView 析构函数


public void addLocalFolderResource(const QString & path, const QString & url, int priority)

添加具有本地 Web 资源目录的 url 映射项

参数

  • path 本地资源目录的路径

  • url 要映射到的网址

  • priority 优先级


public void addArchiveResource(const QString & path, const QString & url, const QString & password, int priority)

使用包含 Web 资源的本地存档 (.zip) 文件添加 url 映射项

参数

  • path 本地存档文件的路径

  • url 要映射到的网址

  • password 存档的密码

  • priority 优先级


public int browserId()

获取浏览器 ID

返回值

浏览器 ID 标识


public void navigateToString(const QString & content)

导航到内容

参数

  • content 内容

public void navigateToUrl(const QString & url)

导航到网址

参数

  • url 网址

public bool browserCanGoBack()

检查浏览器是否可以返回

返回值

如果可以,则为true;否则为false


public bool browserCanGoForward()

检查浏览器是否可以前进

返回值

如果可以,则为true;否则为false


public void browserGoBack()

要求浏览器返回


public void browserGoForward()

要求浏览器前进


public bool browserIsLoading()

检查浏览器是否正在加载

返回值

如果正在加载,则为 true;否则为false


public void browserReload()

要求浏览器重新加载


public void browserStopLoad()

要求浏览器停止加载


public bool triggerEvent(const QCefEvent & event)

触发主框架的事件

参数

返回值

成功时为true;否则为false


public bool triggerEvent(const QCefEvent & event, qint64 frameId)

触发指定frame的事件

参数

返回值

成功时为true;否则为false


public bool broadcastEvent(const QCefEvent & event)

为所有frame广播事件

参数

返回值

成功时为true;否则为false


public bool responseQCefQuery(const QCefQuery & query)

响应 QCefQuery 请求

参数

返回值

成功时为true;否则为false


public bool executeJavascript(qint64 frameId, const QString & code, const QString & url)

在指定的frame中执行javascript代码,此方法不报告javascript的结果。要获取 javascript 执行的结果,请使用 executeJavascriptWithResult

参数

  • frameId frame ID

  • code JavaScript代码

  • url 可在其中找到相关脚本的 URL(如果有)。渲染器可能会请求此 URL 以向开发人员显示错误的来源

返回值

成功时为true;否则为false


public bool executeJavascriptWithResult(qint64 frameId, const QString & code, const QString & url, const QString & context)

在指定的frame中执行javascript代码,结果将通过 reportJavascriptResult 信号发送

参数

  • frameId frame ID

  • code JavaScript 代码

  • url 可在其中找到相关脚本的 URL(如果有)。渲染器可能会请求此 URL 以向开发人员显示错误的来源

  • context 用于标识一个执行的上下文

返回值

成功时为true;否则为false


public bool setPreference(const QString & name, const QVariant & value, const QString & error)

设置此浏览器的首选项

参数

  • name 首选项名称
  • value 首选项值,如果此值为 QVariant::UnknownType 或者 QVariant::Invalid, 则首选项将恢复为默认值
  • error 失败时填充的错误消息

返回值

成功时为true;否则为false


public void setDisablePopupContextMenu(bool disable)

设置是否禁用弹出浏览器的上下文菜单

参数

  • disable True 表示禁用;false 表示启用

public bool isPopupContextMenuDisabled()

获取是否禁用弹出浏览器的上下文菜单

返回值

True 表示禁用;false 表示启用


public bool hasDevTools()

检测此浏览器是否打开了devtools

返回值

如果已经打开,则为 true; 否则为 false


public void showDevTools()

打开 devtools 对话框


public void closeDevTools()

关闭 devtools 对话框


public void setEnableDragAndDrop(bool enable)

设置是否启用拖拽

参数

  • enable True 表示启用;false 表示禁用

不适用于OSR模式。注意这里有一个问题,当将文件拖动到非拖动区域时,将显示该文件的内容。你需要自己解决这个问题。


public bool isDragAndDropEnabled() const

获取是否启用拖拽

返回值

True 表示启用;false 表示禁用


public void setFocus(Qt::FocusReason reason)

请参考 QWidget::setFocus


public QVariant inputMethodQuery(Qt::InputMethodQuery query) const

请参考 QWidget::inputMethodQuery


public void render(QPainter * painter)

将视图内容渲染到目标 painter

参数

  • painter 目标 painter

protected virtual QCefView*onNewBrowser(qint64 sourceFrameId, const QString & url, const QString & name, QCefView::CefWindowOpenDispositiontargetDisposition, QRect & rect,QCefSetting & settings)

在创建新浏览器之前调用(仅适用于由非JavaScript创建的浏览器)

参数

  • frameId 源 frame ID

  • url 目标网址

  • name 目标名称

  • targetDisposition 目标窗口打开方法

  • rect 用于弹出窗口的矩形

  • settings 用于弹出窗口的设置

返回值

如果为 true,则取消弹出窗口;false表示允许


protected virtual bool onNewPopup(qint64 frameId, const QString & targetUrl, QString & targetFrameName, QCefView::CefWindowOpenDispositiontargetDisposition, QRect & rect,QCefSetting & settings, bool & disableJavascriptAccess)

在创建弹出式浏览器之前调用(仅用于由 JavaScript 创建的浏览器)

参数

  • frameId 源 frame ID

  • targetUrl 目标网址

  • targetFrameName 目标名称

  • targetDisposition 目标窗口打开方法

  • settings 用于弹出窗口的设置

  • rect 用于弹出窗口的矩形

返回值

如果为 true,则取消弹出窗口;false表示允许


protected virtual void onNewDownloadItem(const QSharedPointer< QCefDownloadItem > & item, const QString & suggestedName)

需要对新下载项的调用。保留对下载项的引用并调用 QCefDownloadItem::start 方法以允许并启动下载,忽略下载项以禁止下载

参数

  • item 新的下载项目

  • suggestedName 新的建议的名称


protected virtual void onUpdateDownloadItem(const QSharedPointer< QCefDownloadItem > & item)

在更新下载项时调用。 若要获取 QCefDownloadItem::start 的方法,必须在 newDownloadItem 方法中调用

参数

  • item 下载项目

protected virtual bool onRequestCloseFromWeb()

在来自 web 的关闭请求时调用

返回值

True 表示允许关闭, false 取消关闭


protected void paintEvent(QPaintEvent * event)

请参考 QWidget::paintEvent


protected void inputMethodEvent(QInputMethodEvent * event)

请参考 QWidget::inputMethodEvent


protected void showEvent(QShowEvent * event)

请参考 QWidget::showEvent


protected void hideEvent(QHideEvent * event)

请参考 QWidget::hideEvent


protected void focusInEvent(QFocusEvent * event)

请参考 QWidget::focusInEvent


protected void focusOutEvent(QFocusEvent * event)

请参考 QWidget::focusOutEvent


protected void resizeEvent(QResizeEvent * event)

请参考 QWidget::resizeEvent


protected void keyPressEvent(QKeyEvent * event)

请参考 QWidget::keyPressEvent


protected void keyReleaseEvent(QKeyEvent * event)

请参考 QWidget::keyReleaseEvent


protected void mouseMoveEvent(QMouseEvent * event)

请参考 QWidget::mouseMoveEvent


protected void mousePressEvent(QMouseEvent * event)

请参考 QWidget::mousePressEvent


protected void mouseReleaseEvent(QMouseEvent * event)

请参考 QWidget::mouseReleaseEvent


protected void wheelEvent(QWheelEvent * event)

请参考 QWidget::wheelEvent


protected void contextMenuEvent(QContextMenuEvent * event)

请参考 QWidget::contextMenuEvent


{signal} public void loadingStateChanged(int browserId, bool isLoading, bool canGoBack, bool canGoForward)

加载状态更改时调用

参数

  • browserId 表示浏览器 ID

  • isLoading 表示浏览器正在加载

  • canGoBack 表示浏览器可以返回

  • canGoForward 表示浏览器可以前进


{signal} public void loadStart(int browserId, qint64 frameId, bool isMainFrame, int transitionType)

在加载开始时被调用

参数

  • browserId 表示浏览器 ID

  • frameId 表示frame ID

  • isMainFrame 表示这是否是主frame

  • transition_type 过渡类型


{signal} public void loadEnd(int browserId, qint64 frameId, bool isMainFrame, int httpStatusCode)

在加载结束时被调用

参数

  • browserId 表示浏览器 ID

  • frameId 表示frame ID

  • isMainFrame 表示这是否是主frame

  • httpStatusCode HTTP 状态代码


{signal} public void loadError(int browserId, qint64 frameId, bool isMainFrame, int errorCode, const QString & errorMsg, const QString & failedUrl)

由于错误导致加载失败时被调用

参数

  • browserId 表示浏览器 ID

  • frameId 表示frame ID

  • isMainFrame 表示这是否是主frame

  • errorCode 错误代码

  • errorMsg 错误消息

  • failedUrl 导致失败的网址


{signal} public void draggableRegionChanged(const QRegion & draggableRegion, const QRegion & nonDraggableRegion)

在可拖动区域更改时调用

参数

  • draggableRegion 新的可拖动区域

  • nonDraggableRegion 新的不可拖动区域


{signal} public void addressChanged(qint64 frameId, const QString & url)

在网址更改时被调用

参数

  • frameId frame ID

  • url 网址


{signal} public void titleChanged(const QString & title)

网站标题更改时被调用

参数

  • title 网站标题

{signal} public void faviconURLChanged(const QStringList & urls)

网站图标地址更改时被调用

参数

  • urls 图标地址

{signal} public void fullscreenModeChanged(bool fullscreen)

在全屏模式更改时被调用

参数

  • fullscreen 当前全屏模式

{signal} public void statusMessage(const QString & message)

状态消息更改时被调用

参数

  • message 状态信息

{signal} public void consoleMessage(const QString & message, int level)

从 Web 内容调用控制台消息

参数

  • message 消息

  • level 级别


{signal} public void loadingProgressChanged(double progress)

加载进度更改时调用

参数

  • progress 当前进度

{signal} public void cefQueryRequest(int browserId, qint64 frameId, const QCefQuery & query)

在新的 QCefQuery 请求上被调用

参数

  • browserId 浏览器 ID

  • frameId frame ID

  • query 查询请求


{signal} public void invokeMethod(int browserId, qint64 frameId, const QString & method, const QVariantList & arguments)

在从 Web 内容调用方法请求时调用(Javascript)

参数

  • browserId 浏览器 ID

  • frameId frame ID

  • method 方法名称

  • arguments 参数列表


{signal} public void reportJavascriptResult(int browserId, qint64 frameId, const QString & context, const QVariant & result)

对使用 executeJavascriptWithResult 执行的 javascript 的结果进行调用

参数

  • browserId 浏览器 ID

  • frameId frame ID

  • context 上下文

  • result 结果


{signal} public void nativeBrowserCreated(QWindow * window)

在创建原生浏览器窗口后调用。不适用于 OSR 模式。

参数

  • win CEF 窗口

{slot} public inline void setFocus()


enum CefWindowOpenDisposition

表示 CEF 弹出窗口的打开配置枚举

ValuesDescriptions
CefWindowOpenDispositionUnknown
CefWindowOpenDispositionCurrentTab
CefWindowOpenDispositionSingletonTab
CefWindowOpenDispositionNewForeGroundTab
CefWindowOpenDispositionNewBackgroundTab
CefWindowOpenDispositionNewPopup
CefWindowOpenDispositionNewWindow
CefWindowOpenDispositionSaveToDisk
CefWindowOpenDispositionOffTheRecord
CefWindowOpenDispositionIgnoreAction

private QScopedPointer< QCefViewPrivate > d_ptr