如何使用 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);
设置用户代理。这适用于主视图。
如果我在myWebEngineView
的createWindow
方法中创建一个新的myWebEngineView
,用户代理将是QtWebEngine 的默认用户代理。
myWebEngineView
是QWebEngineView
的子类。
如何为所有视图设置用户代理?
【问题讨论】:
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 为子窗口设置用户代理?的主要内容,如果未能解决你的问题,请参考以下文章