如何使 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
来完成它。结果,文本看起来会以某种方式对齐,例如居中。
对不起我的英语,这不是我的母语。
我有一个问题 - 我需要在我的 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
来完成它。结果,文本看起来会以某种方式对齐,例如居中。