2014-01-25 84 views
1

我有一個QGraphicsScene和裏面我有幾個QGraphicsItem s。當我將鼠標懸停在QGraphicsRectItem上時,我想立即顯示重疊文本。只有當光標離開物品時,文字纔會消失。Qt工具提示如何防止內置延遲後文本消失?

下面你可以看到我嘗試使用whatsthis(它崩潰的python)和tooltip。

使用工具提示,我可以使文本立即顯示,但文本在內置延遲後自行消失。

class Node(QGraphicsRectItem): 
    def __init__(self, x, y, w, h, qpen, qbrush, text): 
     QGraphicsRectItem.__init__(self) 

     self.setRect(x, y, w, h) 
     self.setBrush(qbrush) 
     self.setPen(qpen) 

     self.setAcceptHoverEvents(True) 
     self.text = text 

     #self.setFlag(QGraphicsItem.ItemIsMovable) 
     #self.toolkit = QToolTip() 
     #self.setToolTip(text) 
     #self.setWhatsThis(self.text) 

    def hoverEnterEvent(self, event): 
     QToolTip.showText(event.screenPos(),self.text) 

     #print("hoverEnterEvent : {}".format(event)) 
     #print(type(self.toolTip)) 
     #self.QToolTip.showText(event.pos(),text) 
     #event.ToolTip.showText(text) 

     #QWhatsThis.showText(event.screenPos(),self.text) 
     #self.enterWhatsThisMode() 

    def hoverLeaveEvent(self, event): 
     QToolTip.hideText() 

     #print("hoverLeaveEvent : {}".format(event)) 
     #self.QToolTip.hideText() 
     #event.ToolTip.hideText() 

     #QWhatsThis.hideText() 
     #self.leaveWhatsThisMode() 

我使用python 3.3和pyside

+0

這可能是http://stackoverflow.com/questions/13720465/how-to-change-the-time-delay-before-a- qtooltip-節目。還要看看[本頁](http://qt-project.org/faq/answer/how_can_i_change_the_timeout_period_for_a_qtooltip)對於Qt,應該很容易適應你的情況。 – Schollii

+0

@Schollii:不幸。正如我所提到的,這個答案解決了文本顯示的延遲問題。但是,它並沒有解決10秒後工具提示消失的事實。看看你的第二個鏈接中的評論。 – Lazik

+0

良好的觀察,我很驚訝,很難找到提供了一個自定義的彈出窗口小部件的lib,添加了與其他鏈接的答案,也許有用。 – Schollii

回答

0

我想this SO postthis page可能是你的答案。但正如你所指出的,頁面底部的評論表明,這隻適用於控制工具提示出現的時間,而不是多久才能看到。不幸的是,該錯誤鏈接不再存在(另請參閱Keep Qt tooltip open)。我找到的最接近的是https://bugreports.qt-project.org/browse/QTBUG-31707,它沒有被分配給任何人,這表明你必須找到一個提供你想要的東西的庫,或者說,你必須實現你自己的東西。對於後者,你可能想看看QxtToolTipexample