如何设置坐标系?

时间:2015-05-11 12:02:53

标签: c++ qt qgraphicsview qgraphicsitem qgraphicsscene

我有一个继承自MaskGraphicsWidget.cpp的类QGraphicsView,它包含几个函数,构造函数是:

 MaskGraphicsWidget::MaskGraphicsWidget(QTreeWidget * tree, QWidget* parent) : QGraphicsView(parent), m_tree_widget(tree){
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     m_mask_scene = new QGraphicsScene;
     m_mask_scene->setSceneRect(0, 0, 250, 250);
     setScene(m_mask_scene);
     primitive = 0;
     minX = 0;
     minY = 0;
}

我初始化场景m_mask_scene并设置坐标系。

我还有一个函数MousePressEvent

http://pastebin.com/wjwDTQzw

我的MaskGraphicsWidget.h就是这样:

QGraphicsScene* m_mask_scene;
QList<QPointF> m_polygon_points;
QList<QGraphicsLineItem*> m_polygon_lines;
int minX; 
int minY;

我的问题是,我想设置QGraphicsPolygonItem poly的Pos,但如果我将其设置为值minmax(我在其他地方计算),则该项目从当前Pos移至minmax的Pos。基本上它将项目的Pos设置在他自己的坐标系中。如何写我想在m_mask_scene的坐标系中设置Pos? 对不起我的英文,如果您不明白,请随时添加评论!

编辑1:

m_polygon_pointsm_polygon_lines填写在其他地方,并且正在运作。 (见pastebin

编辑2:添加了计划,请参阅下文,以便更好地(我希望)理解!

Plan

计划说明:黑色多边形是我得到的(我没有设置任何Pos),但是如果我将Pos设置为minmax,我会得到红色多边形。我想在minmax设置Pos并且仍然有黑色多边形!对不起我糟糕的油漆技巧

编辑3:当然,如果我打印QGraphicsPolygonItem poly的Pos,则会显示(0,0)

编辑4:添加了一个不会使帖子重载的pastebin,我已将所有内容放入其中,请忽略PrimitiveItem内容,以及case 0和1不适用于QGraphicsPolygonItem

编辑5:为了澄清,我在MousePressEvent上抓住了这个事件:

  • 如果它是左键单击,我用它来创建一个新点(为我的多边形创建新行)
  • 如果是右键,我不会使用该事件,而是关闭我的多边形,删除添加到场景中的所有线条,并在场景中添加多边形。

0 个答案:

没有答案