2017-10-27 1 views
0

몇 가지 이유로 모든 요청에 ​​대해 내 DNS를 변경하고 싶습니다! Qt 5.3 및 QtWebkit으로 작업합니다! 나는 수색을하지만 나에게 도움이되는 것을 찾을 수 없다!
사실 QDnsLookup은 QtWebkit이 특정 look up을 사용하도록 load() 함수를 설정하도록 강제 할 수 없으며 결국 시스템 Dns 설정을 사용합니다!
어떤 아이디어?!시스템 설정이없는 QtWebkit 사용자 정의 DNS 설정

답변

0

당신은 QNAM 서브 클래스와 QWebPage 서브 클래스를 소유하게 만듭니다. DNS 리졸버를 구현하십시오. 그런 다음 작성한 QWebPage 각각에 대해 설정하십시오. 이 방법을 사용하면 WebKit에서 일어나는 일의 완전한 네트워크 제어를 얻을 수 있습니다. 모든 웹 페이지가 QNAM이되도록하려면 서브 클래스를 QWebView으로 설정하고 QWebPage 하위 클래스를 생성자의 페이지로 설정하십시오. 또한 createWindow 오버로드 기능을 사용하면 QWebView 서브 클래스로 새로운 모든 QWebView 페이지 (예 : 팝업)가 생성됩니다.

YourWebView::YourWebView(QWidget *parent):QWebView(parent) 
{ 
    this->setPage(new YourWebPageSubclass()); 
    ... 

QWebView * YourWebView::createWindow(QWebPage::WebWindowType type) 
{ 
    YourWebView * view = Q_NULLPTR;  
    switch(type) 
    { 
    case QWebPage::WebBrowserWindow: 
     view = new YourWebView(0); 
     break; 

    case QWebPage::WebModalDialog: 
     view = new YourWebView(0); 
     view->setWindowModality(Qt::ApplicationModal); 
     break; 
    } 
    return view; 
} 

YourWebPageSubclass::YourWebPageSubclass(QObject *parent):QWebPage(parent) 
{ 
    this->setNetworkAccessManager(new YourQNAM(this)); 
    ... 
+0

실제로 DNS를 구현합니까? – Iman

+0

[createRequest] (http://doc.qt.io/qt-5/qnetworkaccessmanager.html#createRequest) 보호 된 함수를 오버하고 [QNetworkRequest 매개 변수] (http : // doc)를 조작하여 QNetworkAccessManager 하위 케릭터에서이 작업을 수행해야합니다. .qt.io/qt-5/qnetworkrequest.html) 자신의 – Xplatforms

+0

으로 호스트 주소를 바꾸면 나 또는 어떤 링크 나 사이트에 대해 간단하게 쓸 수 있습니까? – Iman