查找QGraphicsScene的中心位置
Find the center position of a QGraphicsScene?
我尝试使用以下代码为场景添加一行:
line = new QGraphicsLineItem(200,55,200,55);
mscene.addItem(ruler);
但似乎QGraphicsLineItem的坐标从左角开始。我不想以任何方式改变起源。我只想检索qgraphicscene/qgraphicview的中心位置坐标。我应该使用什么功能?
line = new QGraphicsLineItem(200,55,200,55);
mscene.addItem(ruler);
作为QGraphicsLineItem的此构造函数的文档状态:-
构造一个QGraphicsLineItem,使用(x1,y1)和(x2,y2)之间的行作为默认行
这将创建一个QGraphicsLineItem,其局部坐标为(200,55,200,55),因此您要创建的线的起点和终点坐标在同一点(200,55%)。
一旦创建了线对象并将其添加到场景中,就可以通过调用setPos来设置其位置。要获得场景的中心位置,可以使用QGraphicsScene::width()和QGraphicsSene::height():-
// Assuming pScene is a pointer to the QGraphicsScene
line->setPos(pScene->width()/2, pScene->height()/2);
QGraphicsView只是一个观察场景的窗口,因此它可能比场景小。在这种情况下,项目可能在场景的中心,但不会出现在视图的中心。
您可以通过调用QGraphicsView::centerOn(const QGraphicsItem*item)来将视图集中在项目上
您可以在coodrinate系统之间进行映射。要获得场景坐标中的屏幕中心,请计算视口的中心,然后进行映射到场景:
myView.mapToScene(myView.viewport()->rect().center())
您可以在以下网站上阅读更多关于坐标映射的信息:[https://doc.qt.io/archives/4.6/graphicsview.html#item-坐标][1]
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 如何在特定位置追加 json 文件
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- OpenGL - 在 NDC 中计算位置适用于着色器,但不适用于'regular'程序