自定义 Qt QGraphicsItem 工具提示

5

我正在寻找一些方法来实现一个简单的自定义 QGraphicsItem 工具提示。

我知道可以使用 setToolTip 设置工具提示的文本。现在我想要的是,在鼠标悬停在 QGraphicsItem 对象的不同部分时动态更改文本。

我考虑的做法是当我获取到 QEvent::ToolTip 事件时,在该事件处理程序中更改工具提示文本。然而,我无法找到接收 QGraphicsItemQEvent::ToolTip 的事件函数。

或者有没有一些方法可以处理鼠标悬停2秒钟的事件。

我该如何实现它?


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - thuga
我已经实现了一个继承自QGraphicsItem的新类。但是QGraphicsItem::sceneEvent没有接收到请求工具提示时发生的QEvent::ToolTip事件。我认为可以用鼠标悬停并停留2或3秒钟的事件来替代QEvent::ToolTip。但是我不知道如何实现它。 - Paler
1个回答

3
你可以在你派生的QGraphicsItem类中实现hoverMoveEvent,并且根据图形项内部位置设置工具提示
void MyItem::hoverMoveEvent(QGraphicsSceneHoverEvent* event)
{
    QPointF p = event->pos(); 
    // use p.x() and p.y() to set the tooltip accrdingly, for example:
    if (p.y() < height()/2)
        setTooltip("Upper Half");
    else
        setTooltip("Bottom Half");
}

请注意,您需要为项目启用悬停事件


当鼠标悬停并停留几秒钟时,需要显示工具提示,但不是在鼠标悬停的那一刻。这就是QEvent :: ToolTip的作用。 - Paler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接