'Maintaining text position after applying ItemIgnoresTransformations flag in Qt
I am having QGraphicsView, which has multiple QGraphicsItem's. On QGraphicsView I am performing multiple transformation like zoom-in, zoom-out, Fit-in etc.
In QGraphicsItem, I am having few rectangles and some polylines Every polyline has its own name written above it.
Whenever I zoom-in or zoom-out my view, I dont want to change my text size. It should remain same. For that I applied flag QGraphicsItem::ItemIgnoresTransformations.
But after applying this flag, whenever I zoomed-in text changes its position. Means in every zoom-in it should be just above the polyline. But it is changing it's position.
I have taken a help from link but still problem persist.
myText.cpp
myText::myText(const QString &text): QGraphicsSimpleTextItem(text)
{}
QRectF myText::boundingRect() const
{
QRectF b = QGraphicsSimpleTextItem::boundingRect();
return QRectF(b.x()-b.width()/2.0, b.y()-b.height()/2.0,
b.width(), b.height());
}
void myText::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->translate(boundingRect().topLeft());
QGraphicsSimpleTextItem::paint(painter, option, widget);
painter->translate(-boundingRect().topLeft());
}
myClass.cpp
void myClass:: addText()
{
QGraphicsSimpleTextItem* text= new QGraphicsSimpleTextItem("Line 1");
text->setPos(QPointF(some points );
text->setDefaultTextColor(Qt::black);
text->setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
scene->addItem(text);
}
So question is :
How to ensure that text should not change its position ?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
