我有一个名为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);
}
如果有人可以向我解释如何保留列表中的所有项目,那将非常感谢!这里的第一个问题,如果我搞砸了,我很抱歉!