【问题标题】:Qt add item in the center of the scene/ viewQt 在场景/视图的中心添加项目
【发布时间】:2011-08-20 19:29:47
【问题描述】:

您好,

我正在尝试在当前屏幕的中心添加一个 QGraphicsItem。
我的 QGraphicsScene 非常大(10k X 10K),所以 QGraphicsView 不能完全显示,有滚动条。

我找不到任何函数来返回当前屏幕的矩形,我在所有 QGraphicsScene 和 QGraphicsView 函数中进行了搜索。
有返回场景矩形的功能(它返回一个 10k X 10k 的矩形,但它没用)并且有返回鼠标位置的功能,但我需要移动鼠标并单击菜单,这样鼠标就不会再在里面了场景和项目将在可见空间之外生成...

非常感谢。

【问题讨论】:

    标签: qt qgraphicsview qgraphicsscene


    【解决方案1】:

    您应该将视口的左上角 (0,0) 映射到场景。宽度和高度等于视口的矩形宽度和高度。

    要获得当前屏幕的矩形试试这个:

    QRect exposedRect(graphicsView.mapToScene(0,0).toPoint(), graphicsView.viewport()->rect().size());
    

    我假设你可以从这里处理它。

    【讨论】:

    • 您好,感谢您的回答。不幸的是,它不起作用。我尝试了 graphicsView.viewport().pos() 和 graphicsView.viewport()->rect().center(),这就是我需要在场景中定位我的项目,但它没有将它们放在中心。我正在使用 setTransformationAnchor(QGraphicsView.AnchorUnderMouse) 和 setResizeAnchor(QGraphicsView.AnchorUnderMouse),但我也尝试过 AnchorViewCenter,但它仍然无法正确定位它们...
    • @Cristi Constantin:您是否尝试过 graphicsView.mapToScene(graphicsView.viewport()->rect().center()) 来获取当前屏幕的中心点,这应该可以完成工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多