有没有简单的方法来设置QWebView类正在使用的用户代理?Qt QWebView类自定义用户代理
唯一相关的链接,我发现搜索是这样
http://www.qtforum.org/article/27073/how-to-set-user-agent-in-qwebview.html
我学习C++/Qt的,现在,我真的不understant什么该网站上的解释。也许有人知道一个简单的方法来做到这一点?或者可以帮助我理解该代码?
有没有简单的方法来设置QWebView类正在使用的用户代理?Qt QWebView类自定义用户代理
唯一相关的链接,我发现搜索是这样
http://www.qtforum.org/article/27073/how-to-set-user-agent-in-qwebview.html
我学习C++/Qt的,现在,我真的不understant什么该网站上的解释。也许有人知道一个简单的方法来做到这一点?或者可以帮助我理解该代码?
Qt允许您提供一个基于URL的用户代理,而不是一个用户代理,不管URL是什么。那么这样做是为了回报用户代理一个新的网页被创建的任何时间:
class UserAgentWebPage : public QWebPage {
QString userAgentForUrl(const QUrl &url) const {
return QString("My User Agent");
}
};
为了使用该页面,而不是创建的标准的页面,你可以设置浏览器控件对象上的页面之前发出请求:
yourWebView->setPage(new UserAgentWebPage(parent));
我真的希望一家工厂存在的地方,将保证创建的网页是某种类型的始终,但我没有看到一个。
另一个选项应该设置QNetworkRequest内的用户代理头:
QNetworkRequest request = new QNetworkRequest();
request->setRawHeader(
QString("User-Agent").toAscii(),
QString("Your User Agent").toAscii()
);
// ... set the URL, etc.
yourWebView->load(request);
你真要检查它是否是toAscii()
或toUtf8()
或其他变体之一,因为我不知道到底HTTP标准允许的内容。
简单,
class myWebPage : public QWebPage
{
virtual QString userAgentForUrl(const QUrl& url) const {
return "your user agent";
}
};
//Attention here is new myWebPage() not new myWebPage(parent)
UI->webView->setPage(new myWebPage());
感谢卡莱布!这就是我一直在寻找的。 – 2010-10-11 20:08:25