继承 QObject、 QGraphicsItem在指定位置指定颜色显示字在固定的位置,放大缩小图像是字的位置也不改变
时间: 2024-03-13 17:44:45 浏览: 53
好的,您的问题是如何在指定位置指定颜色显示字并使其在放大缩小图像时位置不改变。
首先,您需要创建一个继承自QGraphicsItem的自定义图形项类,并在其中实现paint()函数来绘制文字。
在paint()函数中,您可以使用QPainter来设置字体、颜色和位置,并使用drawText()函数来绘制文本,如下所示:
```
void CustomGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
// 绘制文本
painter->setFont(QFont("Arial", 16));
painter->setPen(QPen(Qt::red));
painter->drawText(QPointF(50, 50), "Hello World!");
}
```
为了使文本在放大缩小图像时位置不改变,您需要在boundingRect()函数中返回一个固定大小的矩形。这可以通过使用QFontMetrics来计算文本的大小并返回一个相应的矩形来实现,如下所示:
```
QRectF CustomGraphicsItem::boundingRect() const
{
QFontMetrics metrics(QFont("Arial", 16));
QRectF rect = metrics.boundingRect("Hello World!");
return rect;
}
```
最后,您可以将自定义图形项添加到场景中,并调用setPos()函数来指定其位置,如下所示:
```
CustomGraphicsItem *item = new CustomGraphicsItem();
item->setPos(100, 100);
scene->addItem(item);
```
这样,您就可以在指定位置指定颜色显示文本,并使其在放大缩小图像时位置不改变了。
阅读全文