如何设置QGraphicsSimpleTextItem(Qt C ++)的背景?

时间:2012-07-26 14:42:59

标签: c++ qt user-interface

我已将QGraphicsScene添加到QGraphicsSimpleTextItem,但只是一个简单的文字无法读取当前背景。因此,我想设置QGraphicsSimpleTextItem的背景颜色,但是......没有这样的方法。什么是最简单的解决方案?

3 个答案:

答案 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 );