Changing the cursor in a QGraphicsView
c++, qgraphicsview, qt, qt4
Solution
`QGraphicsView` will automatically change the cursor while dragging, but you can easily fix this by reimplementing a few functions:
class CoolView : public QGraphicsView
{
protected:
void enterEvent(QEvent *event)
{
QGraphicsView::enterEvent(event);
viewport()->setCursor(Qt::CrossCursor);
}
void mousePressEvent(QMouseEvent *event)
{
QGraphicsView::mousePressEvent(event);
viewport()->setCursor(Qt::CrossCursor);
}
void mouseReleaseEvent(QMouseEvent *event)
{
QGraphicsView::mouseReleaseEvent(event);
viewport()->setCursor(Qt::CrossCursor);
}
};
Problem
I'm trying to change the cursor of a `QGraphicsView` while the `ScrollHandDrag` is on, but it doesn't seem to work. I can change the cursor if I disable the `ScrollHandDrag` but not while it's active, I don't see what I could possibly be doing wrong... Bellow is a portion of code that reproduce the problem: ``` QApplication app(argc, argv); QGraphicsScene scene; QRect rectangle(-8, -4, 100, 100); QPen pen(Qt::blue, 1, Qt::SolidLine); scene.addRect(rectangle, pen); scene.setBackgroundBrush(Qt::white); QGraphicsView vue(&scene); vue.setFixedSize(250, 250); //vue.setDragMode(QGraphicsView::ScrollHandDrag); vue.setCursor(Qt::CrossCursor); vue.show(); return app.exec(); ```