我正在尝试使用 Qt 开发一个我不知道是否可以实现的功能。这是要求:
当用户将鼠标悬停在一个节点(从 QGraphicsItem 派生的对象)上时,该节点附近将显示一个窗口,在该窗口中可能有一些直方图或按钮可以单击以显示更多信息。当鼠标离开窗口时,它会自动关闭。
我尝试使用工具提示,因为它可以在节点附近弹出并在鼠标离开它时关闭,但它只能显示文本。所以,它仍然不能那样工作。我想知道是否有另一种方法可以做到这一点?我做了很多谷歌搜索,但仍然没有答案。
非常感谢你帮我解决这个问题。
如果您可以使用 3rd 方库,Qxt 提供了一个类,该类提供基于 QWidget 的工具提示,这将允许您使用任意小部件作为工具提示,而不仅仅是文本。
参见:Qxt::ToolTip
请参考 Qt Example EmbeddedDialog Example,它是高级的,但是您可以了解悬停 Enter/Leaving 事件是如何工作的。我个人更喜欢不要为每个项目创建 Popupdialog 的实例,如果只需要创建它。否则,创建一个对话框并通过构造函数初始化将其引用传递给所有项目。
1. These are the API you are intrested on, reimplemet this.
QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) and void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
2. When You create Dialog, You can pass Qt::WindowFlags as Qt::ToolTip.
您不必为您的应用使用工具提示
您可以在鼠标悬停事件中使用或调用小部件或对话框