在Qt框架中,QGraphicsScene本身是一个用于管理和渲染图形项的容器,并不直接显示在其父控件中。通常,QGraphicsScene会与一个QGraphicsView配合使用,QGraphicsView是一个可以嵌入到父控件中的视图组件,用于显示QGraphicsScene的内容。
要获取QGraphicsScene的左上角相对于其父控件的坐标,你需要考虑QGraphicsView的位置和可能的滚动偏移。以下是一个基本的步骤来获取这个坐标:
-
获取
QGraphicsView在父控件中的位置:这可以通过调用QGraphicsView的pos()方法来实现,该方法返回视图在其父控件中的坐标。 -
考虑滚动条的位置:如果
QGraphicsView有滚动条,并且用户已经滚动了视图,那么你还需要加上当前的滚动偏移。这可以通过调用QGraphicsView的horizontalScrollBar()->value()和verticalScrollBar()->value()方法来获取水平和垂直的滚动偏移。 -
计算最终坐标:将
QGraphicsView的位置与滚动偏移相结合,就可以得到QGraphicsScene左上角相对于父控件的坐标。
下面是一个示例代码片段,演示了如何计算这个坐标:
QGraphicsView* view = ...; // 指向你的QGraphicsView的指针
QPoint sceneTopLeft = view->pos(); // QGraphicsView在父控件中的位置
sceneTopLeft.setX(sceneTopLeft.x() + view->horizontalScrollBar()->value()); // 加上水平滚动偏移
sceneTopLeft.setY(sceneTopLeft.y() + view->verticalScrollBar()->value()); // 加上垂直滚动偏移
// 现在sceneTopLeft包含了QGraphicsScene左上角相对于其父控件的坐标
请注意,这个计算假设QGraphicsView的父控件是一个标准的QWidget,且没有应用任何特殊的变换或缩放。如果你的应用中有更复杂的布局或变换,可能需要进一步调整计算方式。
1万+

被折叠的 条评论
为什么被折叠?



