QGraphicsText项目中的手动新行

时间:2014-05-19 12:43:03

标签: qt qgraphicsitem

我创建了一个可编辑的文本类,继承了QGraphicsTextitem并使用setTextIntraction标志,允许用户在QGraphicsTextItem中输入文本。

现在我想在graphicsTextitem宽度超过视口宽度时手动添加新行。但是当textWidth超过视口的宽度时,我无法找到手动添加新行的相关方法。

我设法将文字左右移动为

QGraphicsView *view = scene()->views()[0];
    QRect viewport_rect(0, 0, view->viewport()->width(), view->viewport()->height());
    QRectF visible_scene_rect = view->mapToScene(viewport_rect).boundingRect();

    qreal sceneRightEnd = visible_scene_rect.right();
    qreal sceneBottom = visible_scene_rect.bottom();


    QPointF textItemRight = mapToScene( now.bottomRight() ) ;
    if(textItemRight.x() >= sceneRightEnd)
    {
        this->moveBy(sceneRightEnd - textItemRight.x(), 0);
    }

    if(textItemRight.y() >= sceneBottom )
    {
        this->moveBy( 0, ( sceneBottom - textItemRight.y() ));
    }

1 个答案:

答案 0 :(得分:1)

您可以通过调用以下方式设置文本项的宽度:

QGraphicsTextItem::setTextWidth(qreal width)

默认宽度为-1,导致文本不会分成多行。

如果设置宽度并且实际文本宽于指定宽度,则它将被分成多行。