2012-07-26 102 views
0

我已添加到我的QGraphicsScene a QGraphicsSimpleTextItem,但只是一個簡單的文本是不可讀的當前背景。因此,我想設置QGraphicsSimpleTextItem的背景顏色,但是......沒有這種方法。什麼是最簡單的解決方案?如何爲QGraphicsSimpleTextItem(Qt C++)設置背景?

+0

你是不是想改變文本項目或背景你的整個場景? – Chris 2012-07-26 14:53:03

+0

文本項目的背景。 – 2012-08-04 11:05:57

回答

3

看來,最簡單的解決方案是使用QGraphicsTextItem,而不是QGraphicsSimpleTextIem,並呼籲setHtml()在構造函數中,例如:

this->setHtml(QString("<div style='background-color: #ffff00;'>") + text + "</div>"); 
-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); 
+0

我想改變QGraphicsSimpleTextItem的背景,而不是整個場景。 – 2012-10-11 15:36:40

2

要改變你的整個場景的背景:

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); 
     }