QGraphicsTextItem を追加したいのですが、背景の色を変更したいと考えています。つまり、テキストを含むboundingRectに特定の色を持たせたいということです。これを行う 1 つの方法は、QGraphicsRectItem を作成し、それをテキストの背面に配置することですが、これを行う別の方法があるかどうか疑問に思っていました。
助けてくれてありがとう!
QGraphicsTextItem
たとえば、次のようにサブクラス化します。
class QGraphicsTextItemWithBackgroundColorOfMyChoosing : public QGraphicsTextItem
{
public:
QGraphicsTextItemWithBackgroundColorOfMyChoosing(const QString &text) :
QGraphicsTextItem(text) { }
void paint( QPainter *painter, const QStyleOptionGraphicsItem *o, QWidget *w) {
painter->setBrush(Qt::red);
painter->drawRect(boundingRect());
QGraphicsTextItem::paint(painter, o, w);
}
};
setHtml()を使用して HTML を QGraphicsTextItem に書き込むことができるため、背景を次のように塗りつぶすことができます。
item->setHtml("<div style='background-color:#666666;'>" + yourText + "</div>");
これは少なすぎるか、遅すぎるかもしれませんが、何かをサブクラス化または再実装する必要なく、次のことがうまくいきました。
item->setHtml(QString("<div style='background:rgba(255, 255, 255, 100%);'>" + QString("put your text here") + QString("</div>") );