我的QGraphicsView光标不会改变

时间:2015-04-02 13:07:12

标签: c++ qt

我已经基于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);

在我的构造函数中。

但是,当鼠标指针位于窗口小部件的第一个像素时,它会变成十字形。我进一步移动的那一刻回到默认的'手'光标,用于表示拖动功能。

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

1 个答案:

答案 0 :(得分:2)

似乎在使用

QApplication::setOverrideCursor(Qt::CrossCursor);

进入小部件时,

QApplication::restoreOverrideCursor();

退出时,就可以了。

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

修改

实际使用上述内容并不是一个好主意,因为使用

更简单
QApplication::changeOverrideCursor(*mCurrentCursor);

你不必担心其他任何事情,Qt将负责堆栈入队/出队。