Qt 将多个QGraphicsItem添加到QGraphicsItemGroup
我正在尝试将多个Qt 将多个QGraphicsItem添加到QGraphicsItemGroup,qt,qgraphicsitem,qlist,Qt,Qgraphicsitem,Qlist,我正在尝试将多个qgraphicsitem添加到qgraphicsitemgroup中,如下所示: case LineMode: lineGroup = new QGraphicsItemGroup; if (c1) { pointItem = new Point; pointItem->setPos(mouseEvent->scenePos()); lineGroup->addToGroup(pointI
qgraphicsitem
添加到qgraphicsitemgroup
中,如下所示:
case LineMode:
lineGroup = new QGraphicsItemGroup;
if (c1)
{
pointItem = new Point;
pointItem->setPos(mouseEvent->scenePos());
lineGroup->addToGroup(pointItem);
start_p = mouseEvent->scenePos();
c1 = false;
c2 = true;
qDebug() << "p1: " << lineGroup->childItems().count();
}
else if (!c1 && c2)
{
pointItem = new Point;
pointItem->setPos(mouseEvent->scenePos());
lineGroup->addToGroup(pointItem);
end_p = mouseEvent->scenePos();
c3 = true;
c2 = false;
qDebug() << "p2:" << lineGroup->childItems().count();
}
if (c3)
{
lineItem = new Line(start_p, end_p);
lineGroup->addToGroup(lineItem);
addItem(lineGroup);
groupList.append(lineGroup);
qDebug() << "p3:" << lineGroup->childItems().count();
}
break;
即使添加了3个项目,添加到组中的项目数仍保持为1,即
p1: 1
p2: 1
p3: 1
此外,添加的第一项也不会显示
左边的图像是预期的输出,而我得到的是右边的。
如何解决这个问题?为什么每次在
开关
语句中创建一个新组时,组中只有一项会让您感到惊讶?@thuga有三项组成一行。因此,lineGroup
必须包含这3项。我希望将这3个项目(pointItem1、pointItem2、lineItem)添加为单个线组。然后仅在添加第一个点时创建一个新组。每个点不应该在他们自己的组中,那将是愚蠢的。将新建的QGraphicsItemGroup
移动到if(c1)
。这是如果您可以保证这是第一个将为真的if
语句。您还应该检查是否已在其他if
/else if
块中创建了线组
。我已经尝试过:(它导致分段错误指向线组->addToGroup(pointItem);
在第二个if块中。似乎有什么东西破坏了您的线组
。除非您使用的是同名的局部变量。
p1: 1
p2: 1
p3: 1