Your GraphicsView
class inherits QGraphicsView
, which is not used in your code.
Try the following : in the main window constructor, use your GraphicsView
instance directly as a QGraphicsView
:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
myCanvas = new GraphicsView;
//myCanvas -> sizeGS(0, 0, 800, 600);
setCentralWidget(myCanvas);
resize(800,600);
}
In GraphicsView
header, do not embed another QGraphicsView
! (I comment useless lines out)
class GraphicsView : public QGraphicsView
{
Q_OBJECT
public:
explicit GraphicsView(QObject *parent = 0);
~GraphicsView(){};
//void sizeGS(int x0, int y0, int x1, int y1);
//QGraphicsView* getView() {return canvasView;};
protected:
operationType currentOperation;
private:
static const int exMaxPolygonSize = 10;
QGraphicsScene *canvasScene;
//QGraphicsView *canvasView;
std::vector<QPointF> mousePos;
QList<QGraphicsItem *> draftedItems;
QPointF topLeft;
QPointF bottomRight;
void resetLineDrawing();
void completeDrawing();
void mousePressEvent(QMouseEvent *mouseEvent);
};
Finally, in your GraphicsView cpp file, just use it as expected :
GraphicsView::GraphicsView(QObject *parent) :
QGraphicsView()
{
canvasScene = new QGraphicsScene;
//canvasView = new QGraphicsView(canvasScene);
this->setScene(canvasScene); // here you associate the scene with the view
setSceneRect(0, 0, 800, 600); // override your sizeGS() call
mousePos.reserve(exMaxPolygonSize);
//canvasView->setMouseTracking(true);
canvasView->setRenderHints( QPainter::Antialiasing );
qDebug() << "constructor is ok";
}
void GraphicsView::mousePressEvent(QMouseEvent *event)
{
qDebug() << "mouse grabbed!";
};
Now you should see mousePressEvents
, because you actually use the intended GraphicsView