2017-10-27 6 views
0

いくつかの理由で私のリクエストごとに自分のDNSを変更したい!私はQt 5.3とQtWebkitを使用しています!私は検索しますが、私は私を助けることができる何かを見つけることができません!
QDnsLookupはQtWebkitにload()関数を設定して特定のルックアップを使用させることはできず、最後にはシステムのDns設定を使用します。
システム設定のないQtWebkitのカスタムDNS設定

答えて

0

あなた自身をQNAMサブクラスとQWebPageサブクラスを作成してください。そこにDNSリゾルバを実装します。次に、作成するQWebPageごとに設定します。この方法で、WebKitで何が起きるかを完全にネットワークで制御できます。 すべてのWebPagesが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サブカルalsでこれを行う必要があります.qt.io/qt-5/qnetworkrequest.html)あなた自身の – Xplatforms

+0

とホストアドレスを交換すると、私のために簡単なものを書くことができますか、リンクやサイトはどうですか? – Iman

関連する問題