QGraphicsView를 서브 클래 싱하여 휠 이벤트를 줌인 및 줌아웃하도록 서브 클래 싱했습니다. 휠 스크롤하면 줌 기능이 잘 작동하고 (내가 원하는 기능 임) graphicsview로 설정되어 현장에있는 항목의 배율 GraphicsView추가 된 QWidget을 축척하지 않고 QGraphicsView 크기를 조정하십시오.
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
플래그를 제거하고 및 그것은 내가 원하는 것을 분명히 아니다 화면 만 변경 크기의 중앙에 완벽하게 남아 축소하는 경우 때문에, 얻을 해달라고
하는 경우 아무도 이것에 약간의 빛을 비출 수 있습니다 나는 어떤 도움을 주셔서 감사합니다
크기를 조정해야하는 모든 항목은 QGraphicsItem 그룹에 있지만 항목 자체는 크기를 조정해서는 안되며 항목에 모두 레이아웃되어 있으므로 장면 크기를 조정할 필요가 있습니다. 즉 항목의 크기는 동일하지만 레이아웃의 크기가 조절됩니다. 그들은 마커를 이미지 위에 올려 놓기 때문에 마커가 같은 크기가 되길 원하지만, 확대/축소가 필요하다면 동일한 확대/축소 레벨에서 같은 레이아웃으로 머물러 있어야합니다. – AngryDuck