Как установить пользовательский агент для дочерних окон с помощью QTWebEngine?

Я создал свой собственный веб-браузер с помощью QtWebEngine. Теперь я хотел бы установить пользовательский агент с помощью this->page()->profile()->setHttpUserAgent(USER_AGENT);. Это хорошо работает для основного вида.

Если я создам новый myWebEngineView внутри метода createWindow из myWebEngineView, пользовательский агент будет пользовательским агентом QtWebEngine по умолчанию.

myWebEngineView является подклассом QWebEngineView.

Как установить пользовательский агент для всех представлений?


person Chris J.    schedule 05.01.2017    source источник
comment
Спасибо, но обе подсказки не меняют пользовательский агент в новом окне или всплывающем окне.   -  person Chris J.    schedule 11.01.2017
comment
Я создал подкласс QWebEngineUrlRequestInterceptor и таким образом изменил пользовательский агент.   -  person Chris J.    schedule 11.01.2017


Ответы (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).

person elsamuko    schedule 11.12.2019