我尝试使用以下代码在场景中添加一行:

    line = new QGraphicsLineItem(200,55,200,55);
    mscene.addItem(ruler);

但是,似乎QGraphicsLineItem的坐标从左上角开始。
我不想以任何方式更改原点。我只想检索qgraphicsscene / qgraphicsview的中心位置坐标。
我应该使用什么功能?

最佳答案

line = new QGraphicsLineItem(200,55,200,55);
mscene.addItem(ruler);

作为此QGraphicsLineItem构造函数的docs状态:-



这将创建QGraphicsLineItem,其本地坐标(200、55、200、55),因此您创建的线在同一点(200、55)的起始和终止坐标。

创建线对象并将其添加到场景后,可以通过调用setPos设置其位置。要获取场景的中心位置,可以使用QGraphicsScene::width()QGraphicsScene::height():-
// Assuming pScene is a pointer to the QGraphicsScene
line->setPos(pScene->width()/2, pScene->height()/2);

QGraphicsView只是一个查看场景的窗口,因此它可以小于场景。在这种情况下,该项目可能位于场景的中心,但不会出现在 View 的中心。

您可以通过调用QGraphicsView::centerOn(const QGraphicsItem * item)将 View 集中在项目上

关于c++ - 找到QGraphicsScene的中心位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26602264/

10-10 17:52