我试图创建将在与角蛋白文本(存储在属性)场景中绘制的自定义对象(矩形,它从QGraphicsItem继承),但是当我缩放它时 - 我希望保留相同的文字大小。这是我的结局。涂料功能:Qt使用未缩放文本缩放自定义QGraphicsItem
void CustomRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, QWidget *widget)
{
QColor currentColor = get_ColorByCurrentState();
QRectF rect = boundingRect();
QPen pen(currentColor, Own_LineWidith);
painter->setPen(pen);
painter->drawRect(rect);
QRectF rect_text(rect.x(), rect.y(),100,100);
painter->drawText(rect_text,this->getText());
}
和我的两个缩放功能:
void CustomObject::scaleUp()
{
scale(ScaleFactor_X,ScaleFactor_Y);
}
void CustomObject::scaleDown()
{
scale(1/ScaleFactor_X,1/ScaleFactor_Y);
}
但仍文本保持与矩形缩放一起。
编辑1 我尝试添加另一种方式,我nfucntion创建,并增加了我的矩形场景(在这里 - 一个名为“NEWOBJECT”),但结果还是一样。
QGraphicsTextItem* GTI = new QGraphicsTextItem(newObject->toStringForScene(), newObject);
我开始认为我应该创建每个文本对象作为分离的对象并保存它不同的列表。 Ofcours,我不得不更新它,每当它的对象被移动。
这没有工作得很好,因为我的预期。它忽略正确地向上/向下缩放其父对象,而且 - 忽略缩小/放大。 – Arker
是的,它忽略放大/缩小。我认为这是你想要的。对不起,我没有正确理解你的问题。 – Tomas