如何在Qt中显示工具提示

3
我正在使用Qt4.5编写一个程序,展示另一种语言的书籍。因此,我有大量文本,并且我想为每个单词显示不同的工具提示(工具提示将包含适当单词的解析信息)。
最好的方法是什么?
对于使用php和jquery的浏览器,我有一个可行的解决方案,所以我考虑将其某种方式移植到c++并使用QWebView显示它,但我有一种感觉,认为还有更好的解决方案...
[编辑] 让我补充一下,我从数据库中显示单词,因此我有一个类似于这样的数据库:
| Id | Word | ParsingInfo                  |
--------------------------------------------
|  0 | The  | Article                      |
|  1 | fish | Noun, Subject etc.           |
|  2 | are  | Verb, 3rd Person Singular... |
|  3 | blue | Adjective...                 |

所以我需要一种方法来确定显示的单词的ID,而不仅仅是单词本身,因为例如单词“that”可以以不同的方式使用,或者“wind”有一个同形异义词(但我正在处理的语言是希腊语)。
2个回答

4
QToolTip文档中可以看出:
最简单和常见的设置小部件工具提示的方法是调用其QWidget::setToolTip()函数。
还可以通过使用类型为QEvent::ToolTip的QHelpEvent来为小部件的不同区域显示不同的工具提示。在小部件的event()函数中拦截帮助事件,并使用要显示的文本调用QToolTip::showText()。示例Tooltips说明了这种技术。
当你获得帮助事件时,你需要确定光标下的单词。我不知道怎么做,但我相信一定有办法。

谢谢,这正是我正在苦苦挣扎的问题——找出光标下的单词是哪个... - jcuenod

3
如果您只使用简单的HTML,可以切换到QTextBrowser。然后使用cursorForPosition方法获取一个QTextCursor,从中您可以获取当前位置的文本。

这看起来很有趣,谢谢。但是我该如何获取这个单词的ID呢? - jcuenod
@j3frea:使用QTextEdit或QTextBrowser,您可以使用QTextBlocks构建字符串。每个块(在您的情况下是一个单词)都有存储用户数据(您的ID)的能力。然后,在此处提到的cursorForPosition函数可以获取QTextCursor,它返回所在块的QTextBlock,并且您可以从中获取用户数据(ID)。虽然有些复杂,但这是可行的。 - Caleb Huitt - cjhuitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接