在另一个函数中访问QList项时,为什么会丢失我的QList项?

时间:2017-03-02 12:57:33

标签: c++ visual-studio qt qlist

GraphWidget Timeline Image.

我有一个名为node1List的列表,它存储了要在QGraphicsScene中显示的节点列表。 GraphWidget.cpp是用户可以单击以添加节点的时间轴。 EffectsWidget是另一个时间轴,可以选择向场景添加三个QLabel。添加这些标签后,我需要在相应的相应位置向graphWidget时间轴添加一个节点。

graphWidget.h中的列表声明:

private:
QList<Node *> node1List;

在graphWidget.cpp中,在鼠标单击上,我创建一个节点并将其添加到列表中:

void GraphWidget::mousePressEvent(QMouseEvent *event)
{
    switch (event->button()) {
    case Qt::MouseButton::RightButton: {
        //... create node
        addNode1(newNode, location);
        //...
        }
    break;
    }
}

这是addNode1函数,它在同一个graphWidget.cpp中声明:

void GraphWidget::addNode1(Node *newNode,int  loc)
{
    node1List.insert(loc, newNode);
}

一切正常,我可以在鼠标按下事件中访问节点列表。

但是现在我需要在将标签添加到另一个类的效果窗口中时允许添加这些节点。

void EffectsWidget::addEffectsItemStart(){
    graphWidget = new GraphWidget();
    graphWidget->addLabelsToListAt(sceneStartLabel, 1);
    //...
}

然后

void GraphWidget::addLabelsToListAt(QLabel *label, int location)
{
    labelListGraphWidget.insert(location, label);
    generateNodes(label);
}

最后,现在当我拨打generateNodes(label)时,我输出node1List的大小只是为了发现它是空的?

void GraphWidget::generateNodes(QLabel* label)
{
    //The following outputs zero
    DBOUT("List size = " << node1List.size() << "\n");

    //...create new node

    addNode1(newNode, location);
}

如果有人可以向我解释如何保留列表中的所有项目,那将非常感谢!这里的第一个问题,如果我搞砸了,我很抱歉!

0 个答案:

没有答案