如何在QGraphicsSimpleTextItem中居中显示文本?

问题描述

对不起,我的英语不是我的母语。

我有一个问题-我需要在QGraphicsSimpleTextItem中居中放置文本。我从QGraphicsSimpleTextItem继承了我的课程。我需要重写paint()方法还是应该怎么做?

我已经在tightBoundingRect()中阅读了QFontMetrics。我可以在QGraphicsSimpleTextItem中设置紧密边界rect的位置吗?

感谢您的帮助!

解决方法

也许类似的东西可以工作。

void MySimpleTextItem::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget) {
        QFont numberFont = QFont("Helvetica [Cronyx]",20);
        painter->setFont(numberFont);
        painter->drawText(boundingRect(),Qt::AlignCenter,QString::number(itemIndex));
    }

在我的情况下,这段代码是在以椭圆为中心的QGraphicsEllipseItem内部绘制一个数字。我对代码进行了调整,使其适合您的情况,但是这里的要点是painter->drawText(boundingRect(),QString::number(itemIndex));,您可以在其中使用boundingRect()以及标记Qt :: AlignCenter。

,

QGraphicsSimpleTextItem足够大,可以容纳文本,因此在文本中 之内的对齐是没有意义的。

您可能要做的是相对于其他项目放置整个项目。您不需要子类QGraphicsSimpleTextItem。而是使用QGraphicsItem::setPos完成此操作。结果,该文本看起来将以某种方式对齐,例如居中。