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();
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);
}
};