몇 가지 이유로 모든 요청에 대해 내 DNS를 변경하고 싶습니다! Qt 5.3 및 QtWebkit으로 작업합니다! 나는 수색을하지만 나에게 도움이되는 것을 찾을 수 없다!
사실 QDnsLookup은 QtWebkit이 특정 look up을 사용하도록 load() 함수를 설정하도록 강제 할 수 없으며 결국 시스템 Dns 설정을 사용합니다!
어떤 아이디어?!시스템 설정이없는 QtWebkit 사용자 정의 DNS 설정
0
A
답변
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));
...
실제로 DNS를 구현합니까? – Iman
[createRequest] (http://doc.qt.io/qt-5/qnetworkaccessmanager.html#createRequest) 보호 된 함수를 오버하고 [QNetworkRequest 매개 변수] (http : // doc)를 조작하여 QNetworkAccessManager 하위 케릭터에서이 작업을 수행해야합니다. .qt.io/qt-5/qnetworkrequest.html) 자신의 – Xplatforms
으로 호스트 주소를 바꾸면 나 또는 어떤 링크 나 사이트에 대해 간단하게 쓸 수 있습니까? – Iman