我已经基于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);
在我的构造函数中。
但是,当鼠标指针位于窗口小部件的第一个像素时,它会变成十字形。我进一步移动的那一刻回到默认的'手'光标,用于表示拖动功能。
为什么会发生这种情况?如何将光标更改为我喜欢的任何内容?
答案 0 :(得分:2)
似乎在使用
QApplication::setOverrideCursor(Qt::CrossCursor);
进入小部件时,
QApplication::restoreOverrideCursor();
退出时,就可以了。
我不知道为什么setCursor不起作用。
修改强>
实际使用上述内容并不是一个好主意,因为使用
更简单QApplication::changeOverrideCursor(*mCurrentCursor);
你不必担心其他任何事情,Qt将负责堆栈入队/出队。