#include "pictureview.h" #include #include #include #include #include PictureView::PictureView(QWidget* parent) : QWidget(parent) { } void PictureView::paintEvent ( QPaintEvent* event) { Q_UNUSED(event); QPainter painter(this); painter.drawPixmap(0,0,image); painter.end(); } void PictureView::loadFromUrl(QString source) { QMap::iterator it = map.find(source); if (it != map.end() ) { image = it.value(); this->repaint(); } else { requestedUrl = source; QUrl imageUrl(requestedUrl); http = new QHttp(imageUrl.host() ); http->connect(http, SIGNAL(requestFinished(int,bool)),this, SLOT(onLoad(int,bool)) ); http->get(imageUrl.path(), 0); } } void PictureView::onLoad(int id, bool ok) { Q_UNUSED(id); Q_UNUSED(ok); QByteArray data = http->readAll(); QPixmap pixmap; pixmap.loadFromData( data ); delete http; QPixmap scaledImage = pixmap.scaledToHeight(size().height(), Qt::SmoothTransformation ); image = scaledImage; this->repaint(); map.insert(requestedUrl, scaledImage); }