我已将QGraphicsScene
添加到QGraphicsSimpleTextItem
,但只是一个简单的文字无法读取当前背景。因此,我想设置QGraphicsSimpleTextItem
的背景颜色,但是......没有这样的方法。什么是最简单的解决方案?
答案 0 :(得分:4)
要更改整个场景的背景:
myScene->setBackgroundBrush( Qt::red );
或者,如果您想更改文本项的背景,您可能必须继承QGraphicsSimpleTextItem
并覆盖paint()
方法。
class MyTextItem : public QGraphicsSimpleTextIem {
public:
void paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0 )
{
painter->setBrush( Qt::red );
painter->drawRect( boundingRect() );
QGraphicsSimpleTextItem::paint( painter, option, widget );
}
答案 1 :(得分:3)
似乎最简单的解决方案是使用QGraphicsTextItem
代替QGraphicsSimpleTextIem
并在构造函数中调用setHtml()
,例如:
this->setHtml(QString("<div style='background-color: #ffff00;'>") + text + "</div>");
答案 2 :(得分:-1)
以下是访问背景颜色的方法。
QPalette currentPalette = myGraphicScene.palette();
// Set a new color for the background, use QPalette::Window
// as QPalette::Background is obsolete.
currentPalette.setColor( QPalette::Window, Qt::red );
// Set the palette.
myGraphicScene.setPalette( currentPalette );