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とあなたが[-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

QGraphicsView::fitInView中央に (0, 0) を配置し、端に 5 を配置する場合は、ズーム係数を増やすためにも呼び出す必要があります。そして、間違った長方形を使用します: 3 番目と 4 番目の引数は幅と高さです。

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