0

我有一个标准的 Graphicviewclass

#ifndef INPUTGRAPHICVIEW_H
#define INPUTGRAPHICVIEW_H

#include <QGraphicsView>
#include <QPaintEvent>

class InputGraphicView : public QGraphicsView
{
public:
    InputGraphicView(QWidget* parent= NULL);
protected:
    //Take over the interaction
    virtual void wheelEvent(QWheelEvent* event);
    virtual void mousePressEvent(QMouseEvent *e);
 //   void mouseMoveEvent(QMouseEvent* event);

private:
    QGraphicsScene* Scene;
    QGraphicsEllipseItem* ellipse;
    std::vector<QGraphicsPolygonItem*> polygon_graphic;
};

#endif // INPUTGRAPHICVIEW_H

我的问题是我想在 Graphicview 中间有一个正常的固定坐标系。这样我的 x 和 ye [-5,5] 就不会更多了。

但我不明白坐标系的概念,我有我的场景,原点(0,0)在中间?

我试过了

setSceneRect(-5, -5, 5, 5);

但是当我使用我的

void InputGraphicView::mousePressEvent(QMouseEvent *e)
{

    QPointF point;
    point=mapToScene(e->pos().x(),e->pos().y());
    std::cout << point.x() << ", " << point.y() << std::endl;
}

我得到其他坐标。我的出身在中间,但我得到的值是 500 或更多。你知道我能做什么吗?我如何获得具有固定边界的固定坐标系?

4

1 回答 1

0

如果你想让 (0, 0) 在中心和 5 在边缘,你还需要调用QGraphicsView::fitInView来增加缩放系数。而且您使用了不正确的矩形:第三个和第四个参数是宽度和高度。

setSceneRect(-5, -5, 10, 10);
fitInView(-5, -5, 10, 10);
于 2013-11-08T00:12:21.060 回答