我的QGraphics视图的光标不会更改

Cursor won't change for my QGraphicsView

本文关键字:光标 QGraphics 视图 我的      更新时间:2023-10-16

我已经基于QGraphicsView创建了自己的小部件。我这样做是为了重新实现一些鼠标事件,例如:

void Workspace::mouseMoveEvent(QMouseEvent *event)
{
    qDebug() << (QString("Mouse move (%1,%2)").arg(event->x()).arg(event->y()));
    QGraphicsView::mouseMoveEvent(event); 
}

以及安装事件过滤器

bool Workspace::eventFilter(QObject* obj, QEvent* e)
{
    if(e->type() == QEvent::Enter)
        qDebug() << "Entered Workspace";
}

我不喜欢默认的"手"鼠标指针,但我决定使用进行更改

this->setCursor(Qt::CrossCursor);

在我的构造函数中。

然而,发生的情况是,鼠标指针只在小部件的第一个像素处变为十字。当我进一步移动时,它会返回到默认的"手"光标,用于表示拖动功能。

为什么会发生这种情况?我如何将光标更改为我喜欢的位置?

似乎使用

QApplication::setOverrideCursor(Qt::CrossCursor);

当输入小部件时,以及

QApplication::restoreOverrideCursor();

当退出时,就完成了任务。

我不知道为什么setCursor不起作用。

编辑

实际上,使用上面的不是一个好主意,因为只使用更简单

QApplication::changeOverrideCursor(*mCurrentCursor);

通过这种方式,您将不必担心其他任何事情,Qt将负责队列中/队列中的堆栈。