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