我创建了一个可编辑的文本类,继承了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() ));
}
答案 0 :(得分:1)
您可以通过调用以下方式设置文本项的宽度:
QGraphicsTextItem::setTextWidth(qreal width)
默认宽度为-1,导致文本不会分成多行。
如果设置宽度并且实际文本宽于指定宽度,则它将被分成多行。