2013-04-22 4 views
2

Я хочу иметь подвижную многоцветную всплывающую подсказку для QGraphicsItems. Например, когда я нажимаю на graphicsItem в сцене, появляется всплывающая подсказка, а при перетаскивании мыши подсказка должна следовать за курсором. Я могу реализовать подвижную подсказку со стандартным QToolTip, но, похоже, Qt поддерживает только 1 цвет для всей подсказки. Кроме того, QToolTip не имеет paintEvent, поэтому я решил создать класс ColoredTooltip, унаследованный от QTextEdit, но проблема возникает, когда я показываю объект ColoredTooltip с первого раза. Он начал захватывать события мыши, что не подходит для меня, потому что я не могу поймать события mouseMove для графической сцены и переместить цветной Tooltip. Как я могу решить эту проблему?Многоцветная подсказка в Qt

+0

Возможно, вы имели в виду «несколько цветов на той же всплывающей подсказке»? Вы хотите изменить цвет или хотите «текстурировать» подсказку? – leemes

+0

Нет, я могу изменить цвет для всплывающей подсказки, но хочу иметь по крайней мере 3 цвета в одной всплывающей подсказке. – IKM2007

+0

И как они должны появиться? Как линейный градиент? Вы пробовали кисть, как в моем ответе? Я не тестировал его, поэтому я не знаю, работает ли это. – leemes

ответ

5

Чтобы покрасить отдельные слова (или любую часть текста), используйте Qt's tiny HTML subset supported by its rich text engine. Поддерживаются тег <font> и атрибут color=. QToolTip поддерживает богатый текст.

Это один работает для меня:

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

Чтобы использовать любой RGB цвета (не только известные имена), используйте шестигранное обозначение:

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

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

Заметьте, что если вам нужно переместить наконечник инструмента во время показа или хотите установить дополнительные свойства, вы можете просто использовать QGraphicsItem::setToolTip.

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