如何使 QGraphicsSimpleTextItem 中的文本居中?

How to center text in QGraphicsSimpleTextItem?

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

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

我在 QFontMetrics 中读到了 tightBoundingRect()。我可以在 QGraphicsSimpleTextItem 中设置紧密边界矩形的位置吗?

感谢您的帮助!

也许这样的方法可行。

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(), Qt::AlignCenter, QString::number(itemIndex));,你在其中使用 boundingRect() 和标志 Qt::AlignCenter.

QGraphicsSimpleTextItem 刚好可以容纳文本,因此 项目中对齐文本没有意义。

也就是说,您可能会做的是相对于其他项目定位整个项目。您不需要继承 QGraphicsSimpleTextItem。相反,使用 QGraphicsItem::setPos 来完成它。结果,文本看起来会以某种方式对齐,例如居中。