2013-08-23 61 views
2

我想開發一個使用Qt的功能,我不知道它是否可以實現。這是要求:如何在工具提示中繪製東西?

當用戶懸停在一個節點(從QGraphicsItem派生的對象)上,窗口將顯示在節點附近,在窗口中可能有一些直方圖或按鈕,可點擊進一步顯示信息。當鼠標離開窗口時,它會自動關閉。

我試着使用工具提示,因爲它可以在節點附近彈出並在鼠標離開時關閉,但它只能顯示文本。所以,它仍然不能這樣工作。我想知道是否有另一種方式來做到這一點?我做了很多谷歌搜索,但仍然沒有答案。

非常感謝您的幫助。

回答

2

如果您可以使用第三方庫,Qxt提供了一個提供基於QWidget的工具提示的類,它可讓您使用任意小部件作爲工具提示而不僅僅是文本。

參見:Qxt::ToolTip

+0

謝謝。克里斯。我厭倦了Qxt :: ToolTip,但它似乎只能用於添加QWidget對象。所以,我最後在節點附近繪製了一個矩形並更改了它的邊界矩形,並且矩形內的所有項目(如按鈕)都是動態繪製的。猜猜我沒有別的選擇。再次感謝。 –

0

你不必使用工具提示您的應用程序

你可以使用或調用控件或對話框,在懸停鼠標事件

0

請參考Qt的例子EmbeddedDialog例如,它是先進的,但你可以理解懸停輸入/離開事件是如何工作的。我個人更喜歡不要爲每個項目創建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. 
+0

謝謝你的解決方案。實際上,我有大約30個節點需要在懸停時彈出一個對話框。這個對話框還可以包含諸如按鈕之類的項目,可以點擊這些項目以觸發進一步的交互,例如顯示直方圖。我想我應該使用EmbeddedDialog,但我選擇了另一種方式....這是動態繪製一個矩形作爲對話框和所有項目裏面,並且耗時.... –

相關問題