gpt4 book ai didi

c++ - 如何使用 QGraphicsView 的缩放级别缩放 QGraphicsEllipseItem

转载 作者:太空狗 更新时间:2023-10-29 20:42:35 24 4
gpt4 key购买 nike

我在一个小部件上有一个 QGraphicsView,我向它添加了许多项目。

当我缩放图形 View 时,其中一些是多边形,一些是椭圆(都是 QGraphicsItems)

void Test::on_verticalSlider_sliderMoved(int position)
{
ui->graphicsView->scale(1.1,1.1);
}

椭圆越来越大,但我希望它们缩小,这样无论我放大多远,它们基本上都保持相同的形状,所以基本上我希望多边形被放大,而不是我拥有的点绘制到这些多边形上......如果这有意义的话

不知道这样更容易,但是在任何时候绘制的所有椭圆点都在同一个 QGraphicsItemGroup 中,所以我可以在整个组上设置一个标志来执行此操作吗?

无论如何,我将不胜感激

谢谢

编辑 ------ 代码示例

item是QGraphicsEllipseItem,m_group_point是QGraphicsItemGroup

 item->setParentItem(m_group_point.get());

然后我将组添加到场景

m_scene2->addItem(m_group_point.get());

然后将该场景添加到 View 中

ui->graphicsView->setScene(m_scene2.get());

它们是.get 因为它们是共享指针

最佳答案

好吧,ignoreTransformation 确实是一个正确的方法。

QGraphicsItem::ItemIgnoresTransformations: The item ignores inherited transformations (i.e., its position is still anchored to its parent, but the parent or view rotation, zoom or shear transformations are ignored). This flag is useful for keeping text label items horizontal and unscaled, so they will still be readable if the view is transformed. When set, the item's view geometry and scene geometry will be maintained separately. You must call deviceTransform() to map coordinates and detect collisions in the view. By default, this flag is disabled. This flag was introduced in Qt 4.3.

关于保持在中间,你应该将 scene 中的椭圆移动到适当的位置,以便它们具有适当的场景坐标,然后你指示忽略 View 的变换,因此它们将忽略任何缩放/rotation/etc 如文档中所述。

关于c++ - 如何使用 QGraphicsView 的缩放级别缩放 QGraphicsEllipseItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com