2016-07-31 4 views
2

QT WebEngine을 사용하여 작업하면서 내 요구 사항에 맞는 데스크탑 웹 브라우저를 만들었습니다. 불행히도 HTTP 헤더가있는 데이터를 사이트에 보내야합니다. 내가 QWebEngineUrlRequestInfo 클래스 'void QWebEngineUrlRequestInfo::setHttpHeader(const QByteArray &name, const QByteArray &value) 메서드를 가로 질러 왔지만, 코드에서 그것을 사용하는 방법을 모른다. 이것은 지금까지 내 코드입니다 :QT WebEngine을 사용하여 HTTPHeader를 보내는 방법은 무엇입니까?

import QtQuick 2.7 
import QtQuick.Window 2.2 
import QtQuick.Controls 2.0 
import QtWebEngine 1.3 

ApplicationWindow { 
    visible: true 
    width: 320 
    height: 240 
    title: qsTr("Browser") 
    flags: Qt.WindowStaysOnTopHint 

    WebEngineView { 
     anchors.fill: parent 
     url: "some http url here" 
     Rectangle{ 
      height: 100 
      width: height 
     } 
    } 
} 

가 여기 내 MAIN.CPP 파일입니다 위의 코드에서 오류가 발생하기 때문에

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 
#include <QtWebEngine/qtwebengineglobal.h> 
#include <QWebEngineUrlRequestInfo> 
#include <QByteArray> 

int main(int argc, char *argv[]) 
{ 
    QByteArray key, value; 
    key.append("SomeKey"); 
    value.append("SomeValue"); 
    QWebEngineUrlRequestInfo url;//Won't work because its constructor is private 
    url.setHttpHeader(key, value); 
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 
    QGuiApplication app(argc, argv); 

    QQmlApplicationEngine engine; 
    QtWebEngine::initialize(); 
    engine.load(QUrl(QLatin1String("qrc:/main.qml"))); 

    return app.exec(); 
} 

, 난 정말이 문제에 대한 수정을 알아낼 수 없습니다. TIA

답변

1

이것은 내 작은 project webengine을 사용하는 FYI입니다.

view->page()->profile()->setRequestInterceptor(/*instance inerit QWebEngineUrlRequestInterceptor*/) 
... 
void /*class inerit WebEngineUrlRequestInterceptor*/::interceptRequest(QWebEngineUrlRequestInfo &info) 
{ 
    info.setHttpHeader("Accept-Language", "zh-CN,zh;q=0.8"); 
}