Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 将多个QGraphicsItem添加到QGraphicsItemGroup_Qt_Qgraphicsitem_Qlist - Fatal编程技术网

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