The ImageLoader Object is associated with the workspace
#include "workspace.h"
#include <QPainter>
#include "workspace.h"
#include <QPainter>
+ImageLoader::ImageLoader()
+{
+ url=QString();
+}
+void ImageLoader::fetchImage(QString path)
+{
+ url=path;
+ start();
+}
+void ImageLoader::run()
+{
+ QImage image(url);
+ emit ready(image);
+}
+
Workspace::Workspace(QWidget *parent) :
QWidget(parent)
{
Workspace::Workspace(QWidget *parent) :
QWidget(parent)
{
- loadImage("/home/shakir/Desktop/Test/test1.jpg");
+ qRegisterMetaType<QImage>("QImage &" );
+ mImageLoader=new ImageLoader();
+ connect(mImageLoader,SIGNAL(ready(QImage&)),this,SLOT(onImageLoaded(QImage&)));
}
void Workspace::loadImage(QString fileName)
{
}
void Workspace::loadImage(QString fileName)
{
- mImage=QImage(fileName);
+ mImageLoader->fetchImage(fileName);
+void Workspace::onImageLoaded(QImage &image)
+{
+ mImage=image.copy();
+ update();
+}
+
void Workspace::zoomIn()
{
mImage=mImage.scaledToHeight(mImage.height()*1.5);
void Workspace::zoomIn()
{
mImage=mImage.scaledToHeight(mImage.height()*1.5);
#define WORKSPACE_H
#include <QWidget>
#define WORKSPACE_H
#include <QWidget>
+#include <QThread>
+
+class ImageLoader:public QThread
+{
+ Q_OBJECT
+public:
+ ImageLoader();
+ void fetchImage(QString path);
+private:
+ void run();
+signals:
+ void ready(QImage&);
+private:
+ QString url;
+};
class Workspace : public QWidget
{
class Workspace : public QWidget
{
virtual void paintEvent(QPaintEvent *);
signals:
virtual void paintEvent(QPaintEvent *);
signals:
public slots:
void zoomIn();
void zoomOut();
public slots:
void zoomIn();
void zoomOut();
+private slots:
+ void onImageLoaded(QImage&);
+ ImageLoader *mImageLoader;