不幸的是,我目前无法对此进行测试,因此这是对您需要的最佳猜测。这是基于我编写的一些代码,该代码有一个文本字段,在您键入时会在工具提示中显示错误,但应该可以工作。
您已经有了代码来选择悬停下的单词,您只需要在正确的位置显示工具提示。
textCursor = text.cursorForPosition(event.pos())
textCursor.select(QTextCursor.WordUnderCursor)
text.setTextCursor(textCursor)
word = textCursor.selectedText()
if meetsSomeCondition(word):
toolTipText = toolTipFromWord(word)
# Put the hover over in an easy to read spot
pos = text.cursorRect(text.textCursor()).bottomRight()
# The pos could also be set to event.pos() if you want it directly under the mouse
pos = text.mapToGlobal(pos)
QtGui.QToolTip.showText(pos,toolTipText)
我已经离开meetsSomeCondition()
并由toolTipFromWord()
你来填写,因为你没有描述那些,但它们对需要去那里的东西很有描述性。
关于您在不选择单词的情况下执行此操作的评论,最简单的方法是在选择新光标之前缓存光标,然后将其设置回来。您可以通过调用QTextEdit.textCursor()
然后像以前一样设置它来做到这一点。
像这样:
oldCur = text.textCursor()
textCursor.select(QTextCursor.WordUnderCursor) # line from above
text.setTextCursor(textCursor) # line from above
word = textCursor.selectedText() # line from above
text.setTextCursor(oldCur)
# if condition as above