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

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

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

myWebEngineViewQWebEngineView 的子类。

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

【问题讨论】:

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

标签: qt c++11 qtwebengine qt5.8


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多