Multicolor tooltip in Qt

2019-07-04 05:30发布

I want to have moveable multicolor tooltip for QGraphicsItems. For example when I click on graphicsItem in scene, tooltip appears, then during dragging mouse tooltip should follow cursor. I can implement movable tooltip with standard QToolTip, but seems Qt support only 1 color for whole tooltip. Also QToolTip doesn't have paintEvent, so I decide to create ColoredTooltip class inherited from QTextEdit, but problem appears when I show at first time ColoredTooltip object. It began to grab mouse events, which is not ok for me, because I can't catch mouseMove events for graphics scene and move coloredTooltip. How can I solve that problem?

1条回答
劫难
2楼-- · 2019-07-04 05:45

To color single words (or any part of a text) use Qt's tiny HTML subset supported by its rich text engine. The <font> tag and the attribute color= are supported. QToolTip supports rich text.

This one works for me:

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

To use any RGB color (not only known names), use the hex-notation:

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

Image showing a tool tip where one word is colored in red

Note that unless you need to move the tool tip while being shown or want to set additional properties, you can simply use QGraphicsItem::setToolTip.

查看更多
登录 后发表回答