2014-01-25 1 views
1

У меня есть QGraphicsScene и внутри у меня есть несколько QGraphicsItem s. Когда я наматываюсь на QGraphicsRectItem, я хочу немедленно наложить текст наложения. Только когда курсор покидает элемент, текст может исчезнуть.Qt Подсказка, как предотвратить исчезновение текста после встроенной задержки?

Ниже вы можете видеть, что я попытался использовать whatsthis (который разбивает python) и всплывающую подсказку.

С помощью всплывающей подсказки я могу сразу же отобразить текст, но после встроенной задержки текст исчезает сам по себе.

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 post и this page может быть ваш ответ. Но, как вы отмечаете, комментарий внизу страницы указывает, что это работает только для контроля того, как скоро появляется всплывающая подсказка, а не как долго она остается видимой. К сожалению, эта ссылка на элемент ошибки больше не существует (см. Также Keep Qt tooltip open). Самое близкое, что я нашел, это https://bugreports.qt-project.org/browse/QTBUG-31707, которому не присвоено никому, что предполагает, что вам либо нужно найти библиотеку, которая обеспечивает то, что вы хотите, либо, кроме того, вы должны реализовать свои собственные. Для последнего вы можете посмотреть QxtToolTip или example

Смежные вопросы