如何使用 QTWebEngine 为子窗口设置用户代理?

Posted

技术标签:

【中文标题】如何使用 QTWebEngine 为子窗口设置用户代理?【英文标题】:How can i set the User Agent for child windows with QTWebEngine? 【发布时间】:2017-01-05 15:51:49 【问题描述】:

我使用 QtWebEngine 创建了自己的 Web 浏览器。现在我想用this->page()->profile()->setHttpUserAgent(USER_AGENT); 设置用户代理。这适用于主视图。

如果我在myWebEngineViewcreateWindow 方法中创建一个新的myWebEngineView,用户代理将是QtWebEngine 的默认用户代理。

myWebEngineViewQWebEngineView 的子类。

如何为所有视图设置用户代理?

【问题讨论】:

QWebEngineProfile::defaultProfile()->setHttpUserAgent(...) ? 谢谢,但两个提示都不会在新窗口或弹出窗口中更改用户代理。 我创建了 QWebEngineUrlRequestInterceptor 的子类,并以这种方式更改了用户代理。 【参考方案1】:

您可以在新创建的窗口中再次设置用户代理:

QWebEngineView* WebEngineView::createWindow( QWebEnginePage::WebWindowType type ) 
    QWebEngineView* view = createView(); // your function to create a new tab or sth like this
    view->page()->profile()->setHttpUserAgent( "" );
    view->page()->profile()->setHttpUserAgent( "Mozilla/5.0( YOUR USER AGENT )" );
    return view;

用户代理需要设置两次,否则不会转移到页面,另见ProfileAdapter::setHttpUserAgent(const QString &userAgent)。

【讨论】:

以上是关于如何使用 QTWebEngine 为子窗口设置用户代理?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swiftui 中为子视图设置私有状态变量?

qt:如何使用 QPropertyAnimation 为子 QPushButton 的透明度设置动画?

pyqt5+QWebEngine窗口图形无法显示解决方案

如何强制更新隐藏窗口?

如何使用 QtWebEngine 捕获完整的网页?

如何将 QStackedWidget 大小设置为子小部件的最小尺寸?