gpt4 book ai didi

c++ - 光标不会为我的 QGraphicsView 改变

转载 作者:行者123 更新时间:2023-11-30 03:54:40 25 4
gpt4 key购买 nike

我已经基于 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 会处理堆栈入队/出队。

关于c++ - 光标不会为我的 QGraphicsView 改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29413766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com