【问题标题】:How to draw something in a tooltip?如何在工具提示中绘制一些东西?
【发布时间】:2013-08-23 23:56:24
【问题描述】:

我正在尝试使用 Qt 开发一个我不知道是否可以实现的功能。这是要求:

当用户将鼠标悬停在一个节点(从 QGraphicsItem 派生的对象)上时,该节点附近将显示一个窗口,在该窗口中可能有一些直方图或按钮可以单击以显示更多信息。当鼠标离开窗口时,它会自动关闭。

我尝试使用工具提示,因为它可以在节点附近弹出并在鼠标离开时关闭,但它只能显示文本。所以,它仍然不能那样工作。我想知道是否有另一种方法可以做到这一点? google了很多遍,还是没有答案。

非常感谢你帮我解决这个问题。

【问题讨论】:

    标签: qt hover tooltip draw


    【解决方案1】:

    如果您可以使用 3rd 方库,Qxt 提供了一个类,该类提供基于 QWidget 的工具提示,这将允许您使用任意小部件作为工具提示,而不仅仅是文本。

    见:Qxt::ToolTip

    【讨论】:

    • 谢谢。克里斯。我厌倦了Qxt::ToolTip,但它似乎只能用于添加QWidget对象。因此,我最终在节点附近绘制了一个矩形并更改了它的边界矩形,并且矩形内的所有项目(如按钮)都是动态绘制的。我想我别无选择。再次感谢。
    【解决方案2】:

    您不必为您的应用使用工具提示

    您可以在鼠标悬停事件

    上使用或调用小部件或对话框

    【讨论】:

      【解决方案3】:

      请参考Qt Example EmbeddedDialog Example,它是高级的,但是你可以理解hover 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. 
      

      【讨论】:

      • 感谢您的解决方案。实际上,我有大约 30 个节点需要在悬停时弹出一个对话框。此对话框还可以包含诸如按钮之类的项目,可以单击这些项目以触发进一步的交互,例如显示直方图。我想我应该用EmbeddedDialog,但我选择了另一种方式....动态绘制一个矩形作为对话框和里面的所有项目,很耗时....
      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 2022-12-24
      • 2013-05-22
      相关资源
      最近更新 更多