#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QObject>
#include <QAction>
#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <QImage>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QMouseEvent>


int PositionX = 0;
int PositionY = 0;

bool dragging = false;


class myView : public QGraphicsView
{
Q_OBJECT
public:
	myView(QWidget *parent);
protected:
	void mouseMoveEvent(QMouseEvent *event);
};


myView::myView(QWidget *parent)
: QGraphicsView(parent)
{

}

class myLabel : public QLabel
{
Q_OBJECT
public:
	myLabel(QWidget *parent);
protected:
	void mousePressEvent(QMouseEvent *event);
	void mouseReleaseEvent(QMouseEvent *event);
};


myLabel::myLabel(QWidget *parent)
: QLabel(parent)
{

}


myView *imgView;

myLabel *imgLabel;

QGraphicsScene *imgScene;



class myWindow : public QWidget
{
Q_OBJECT
public:
	myWindow(void);
};


myWindow::myWindow(void) {


	this->resize(400, 400);
	imgView = new myView( this );
	imgView->setGeometry(QRect(10, 10, 380, 380));
	imgScene = new QGraphicsScene( this );
	imgScene->addPixmap(QPixmap::fromImage(QImage(":/image.png")));
	imgView->setScene(imgScene);
	imgLabel = new myLabel( imgView );
	imgLabel->setGeometry(QRect(20, 20, 80, 16));
	imgLabel->setText("Hello World!");
}


void myView::mouseMoveEvent(QMouseEvent *event) {
	PositionX = event->x();
	PositionY = event->y();

	if (dragging) {
		imgLabel->setGeometry(PositionX, PositionY, imgLabel->width(), imgLabel->height());
	}

}

void myLabel::mousePressEvent(QMouseEvent *event) {
	dragging = true;
}

void myLabel::mouseReleaseEvent(QMouseEvent *event) {
	dragging = false;
}


#include "moc_mainwindow.cpp"
#endif // MAINWINDOW_H
