gpt4 book ai didi

c++ - 不按住鼠标按钮不接收 mouseMoveEvent

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

我正在尝试实现悬停功能,当我将鼠标悬停在项目的特定区域时,我会重新绘制项目。

class TestItem : public QQuickItem
{
Q_OBJECT

public:
explicit TestItem(QQuickItem *parent = nullptr) : QQuickItem(parent)
{
setAcceptHoverEvents(true);
setAcceptedMouseButtons(Qt::AllButtons);
}

protected:
// QQuickItem interface
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE
{
qDebug() << "mouseMoveEvent()" << event->buttons() << event->x() << event->y();
}

void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE
{
qDebug() << "mousePressEvent()" << event->buttons() << event->x() << event->y();
}

void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE
{
qDebug() << "mouseReleaseEvent()" << event->buttons() << event->x() << event->y();
}
};

但是,使用此类,当我将光标移到我的项目上时,我不会在终端上收到任何“mouseMoveEvent()”输出。它仅在按住任何鼠标按钮时有效。

如何在不强制用户按住任何鼠标按钮的情况下实现这一点?

最佳答案

我可以自己解决,问题是我在监听错误的事件。正确的事件应该是 hoverMoveEvent()

使用下面的类,我得到了正确的输出:

class TestItem : public QQuickItem
{
Q_OBJECT

public:
explicit TestItem(QQuickItem *parent = nullptr) : QQuickItem(parent)
{
setAcceptHoverEvents(true);
}

protected:
// QQuickItem interface
void hoverEnterEvent(QHoverEvent *event) Q_DECL_OVERRIDE
{
qDebug() << "hoverEnterEvent()" << event->posF();
}

void hoverMoveEvent(QHoverEvent *event) Q_DECL_OVERRIDE
{
qDebug() << "hoverMoveEvent()" << event->posF();
}

void hoverLeaveEvent(QHoverEvent *event) Q_DECL_OVERRIDE
{
qDebug() << "hoverLeaveEvent()" << event->posF();
}
};

关于c++ - 不按住鼠标按钮不接收 mouseMoveEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45011403/

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