Qt中的多彩提示信息

6

我希望能够为QGraphicsItems创建可移动的多彩提示框。例如,当我在场景中点击graphicsItem时,提示框出现,然后在拖动鼠标时,提示框应该跟随光标移动。我可以使用标准的QToolTip实现可移动的提示框,但似乎Qt仅支持整个提示框只有一种颜色。同时,QToolTip没有paintEvent方法,因此我决定创建一个从QTextEdit继承的ColoredTooltip类,但是在第一次显示ColoredTooltip对象时就出现了问题。它开始抓取鼠标事件,这对我来说不好,因为我无法捕获graphics scene的mouseMove事件并移动coloredTooltip。我该如何解决这个问题?


你是不是想说“在同一个工具提示上使用多种颜色”?你是想改变颜色还是想给工具提示添加纹理? - leemes
啊等等……如果你指的是文本颜色,那么你很可能想要给单词上色。你可以在工具提示中使用HTML。 - leemes
HTML在标准提示框中无法正常工作。 - IKM2007
HTML对我来说没问题,看看我的其他答案。请试一下那个。 - leemes
1
哦,我明白了。请注意,一旦文本包含HTML标记,Qt会将其解析为HTML(他们称之为“富文本”)。在HTML中,像\n\t这样的空格字符会被忽略。使用<br/>进行换行。至于制表符,我不知道有什么替代方法。通常,人们使用CSS来实现这一点,但这可能有些过度设计(我还记得在Qt CSS中遇到过一些麻烦)。也许可以使用古老而丑陋的空格&nbsp;&nbsp;&nbsp;&nbsp;来实现。 - leemes
显示剩余7条评论
1个回答

11

要给单词(或任何文本部分)上色,请使用Qt的富文本引擎支持的微型HTML子集。支持<font>标签和属性color=QToolTip支持富文本。

这个方法对我有效:

toolTip.setText("foo <font color=\"red\">bar</font>");

要使用任何RGB颜色(不仅仅是已知的名称),请使用十六进制表示法:

toolTip.setText("foo <font color=\"#ff0000\">bar</font>");

展示一个工具提示,其中一个单词被标成红色的图像

请注意,除非您需要在显示时移动工具提示或想要设置其他属性,否则您可以简单地使用QGraphicsItem::setToolTip


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