公司是内网,需要代理才能上外网。其次cache 避免重复加载的问题。
不过好奇没实现功能。思路应当没有问题,实现?? 待续...
-----------------------------------------------------------------------------------以下是正文 -------------------------------------------------------
重载MyNetworkAccessManagerFactory的create函数。
QNetworkAccessManager* NetworkAccessManagerFactory::create(QObject* parent)
{
QNetworkAccessManager* manager = new QNetworkAccessManager(parent);
QNetworkDiskCache* diskCache = new QNetworkDiskCache(parent);
//设置缓存
QString dataPath = QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
QDir().mkpath(dataPath);
diskCache->setCacheDirectory(dataPath);
diskCache->setMaximumCacheSize(10*1024*1024);
manager->setCache(diskCache);
//设置代理
if (!proxyHost.isEmpty())
{
qDebug() << "Created QNetworkAccessManager using proxy" << (proxyHost + ":" + QString::number(proxyPort));
QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, proxyHost, proxyPort,username,password);
manager->setProxy(proxy);
}
return manager;
}
在main页面 设置网络设置,factory为创建的设置类,具体代码参考qt助手和链接内容
viewer.engine()->setNetworkAccessManagerFactory(&factory);
参考:
Qt助手 declarative/cppextensions/networkaccessmanagerfactory
http://www.developer.nokia.com/Community/Wiki/在QML_中使用cache_优化程序性能