QGraphicsEllipseItem不可移动

时间:2014-07-28 08:01:54

标签: c++ qt qgraphicsview

我正在使用MAC OS X / QT5.3小部件应用程序,并且我试图让QGraphicsEllipseItem中的QGraphicsItemGroup移动。我设置了所有需要的标志,但是椭圆不会移动。

这是我的代码(省略不重要和简化):

 QGraphicsView * view;
 QGraphicsItemGroup * controlPoints;
 //there are more groups

 void setUp()
 {
    view = new QGraphicsView();
    view->setRenderHint(QPainter::Antialiasing,true);

    QGraphicsScene * scene = new QGraphicsScene(0,0,500,500);
    view.setScene(scene);

    controlPoints = new QGraphicsItemGroup();
    //there are multiple groups and i need them to be in different depths(zvalues)
    controlPoints->setZValue(2);

    scene.addItem(controlPoints);
 }

 void AddPointsToGroup()
 {
    QGraphicsEllipseItem * controlPoint = new QGraphicsEllipseItem(100,100,6.5,6.5);
    controlPoint->setFlag(QGraphicsItem::ItemIsMovable,true);
    controlPoint->setFlag(QGraphicsItem::ItemIsSelectable,true);
    controlPoint->setFlag(QGraphicsItem::ItemIsFocusable,true);
    controlPoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges);
    controlPoints->addToGroup (controlPoint);
 }

现在,显示了这一点,但不是可移动的。

1 个答案:

答案 0 :(得分:4)

正如Qt documentation所述: -

  

QGraphicsItemGroup类提供了一个容器,将一组项目视为单个项目。

因此,您不应期望在组内移动单个项目。如果要将组作为一个整体移动,则需要在组本身上设置标志。

由于QGraphicsItem和派生类可以是父级,您可以通过创建单个QGraphicsItem来实现所需的效果,该QGraphicsItem用作所有想要组合在一起的父项。

这将允许移动单独的图形项成员。