3

QGraphicsTextItem を追加したいのですが、背景の色を変更したいと考えています。つまり、テキストを含むboundingRectに特定の色を持たせたいということです。これを行う 1 つの方法は、QGraphicsRectItem を作成し、それをテキストの背面に配置することですが、これを行う別の方法があるかどうか疑問に思っていました。

助けてくれてありがとう!

4

3 に答える 3

12

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); 
        }   
};
于 2013-03-28T14:39:00.640 に答える
5

setHtml()を使用して HTML を QGraphicsTextItem に書き込むことができるため、背景を次のように塗りつぶすことができます。

 item->setHtml("<div style='background-color:#666666;'>" + yourText + "</div>");
于 2013-03-28T14:47:03.443 に答える
2

これは少なすぎるか、遅すぎるかもしれませんが、何かをサブクラス化または再実装する必要なく、次のことがうまくいきました。

item->setHtml(QString("<div style='background:rgba(255, 255, 255, 100%);'>" + QString("put your text here") + QString("</div>") );
于 2016-04-18T15:04:03.893 に答える