如何在QGraphicsItem中包装文本?

Tha*_*lia 5 qt text word-wrap qgraphicsitem

1)如何将文本QGraphicsTextItem换成适合固定矩形的文本,宽度和高度?

现在我正在尝试创建一个文本,获取它的边界矩形,并调整它以适应盒子 - 但我不能得到包装.

class TTT: public QGraphicsTextItem {
    TTT() {
    {
        setPlainText("abcd");
        qreal x = m_itemSize.width()/boundingRect().width();
        qreal y = m_itemSize.height()/boundingRect().height();
        scale(x, y);
    }
    void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
        // experiment with clip regions
        // text gets covered by hole in clip
        QRegion r0(boundingRect().toRect());
        QRegion r1(QRect(5, 5, 10, 10), QRegion::Ellipse);
        QRegion r2 = r0.subtracted(r1);
        painter->setClipRegion(r2);
        painter->setBrush(Qt::yellow);
        painter->drawRect(boundingRect());
        QGraphicsTextItem::paint(painter, option, widget);
    }
}
Run Code Online (Sandbox Code Playgroud)

是什么让包装发生,怎么才能触发呢?

现在,当我一直打字时,该框会自动扩展.

2)是否可以将文本包装在QGraphicsItem/ QGraphicTextItem子类中不是矩形的形状? 在此输入图像描述

(上图中的某些内容)
我试图使用clipRegion,请参阅上面的代码,但我想这不是正确的方法,剪切剪切文本但没有包装.

也许它会...如果我能弄清楚如何首先包装文本?

Qt 4.8

Ada*_*ley 5

您没有指定 Qt 版本,而是尝试:

void QGraphicsTextItem::setTextWidth(qreal 宽度)

设置项目文本的首选宽度。如果实际文本比>指定的宽度宽,那么它将被分成多行。

如果宽度设置为 -1,则文本不会分成多行>除非通过显式换行符或新段落强制执行。

默认值为 -1。