Я создал подкласс QGraphicsView, чтобы иметь некоторые события колеса, которые заставляют его увеличивать и уменьшать масштаб. Когда колесо прокручивается, вызывается функция масштабирования, которая масштабирует GraphicsView
if(zoom_in)
{
factor = 2.0;
}
else
{
factor = 0.5;
}
this->scale(factor, factor);
Это отлично работает и масштабирует элементы, находящиеся на сцене, для которых установлено графическое представление (это то, что мне нужно).
Однако у меня также есть QWidget, добавленный к этой сцене. Виджет должен в основном быть фоном QGraphicsView, он имеет те же размеры и изменяет размеры, чтобы соответствовать виду всякий раз, когда вид изменяется.
Я знаю, что вы можете установить игнорирование переводов и сделали это
proxyWidget = this->scene()->addWidget(myBackgroundWidget);
proxyWidget->setFlag(QGraphicsItem::ItemIgnoresTransformations);
поэтому, когда вид масштабируется, виджет не меняет размер, что правильно, но по какой-то причине он перемещается, он смещается вверх и влево при увеличении и уменьшении и вправо при уменьшении масштаба.
Я вообще не понимаю, почему это происходит, потому что, если просто убрать флаг ItemIgnoresTransformations
и увеличивать и уменьшать масштаб, он остается точно в центре экрана, но меняет размер, что, очевидно, не то, что я хочу.
Если кто-то может пролить свет на это, я был бы признателен за любую помощь