2014-08-29 55 views
-1

我有两个类:pointmainwindow。 我声明一点类的指针mainwindow.h为:Qt向量大小保持不变

point *item; 

我mainwindow.cpp创建点类的一个对象:

void MainWindow::drawPoint(){ 
    item = new point; 
    scene->addItem(item); 
} 

此功能使点的绘画qgraphicsscene

有一个矢量存储点类中的QPointF值。存储类是矢量的类型。

QVector<storage> point_vector; 

set_point()在设置点p1的值的存储类中定义。

storage store_point; 
store_point.set_point(p1); 
point_vector.push_back(store_point); 

在迭代中mainwindow.cpp载体,

for(it = item->point_vector.begin(); it != item->point_vector.end(); it++) 
{ 
    qDebug() << "size" << item->point_vector.size() << "\n"; 
} 

即使我在场景中创建多个点,矢量的大小始终保持1

我认为这可能是因为每次调用函数drawPoint()时,点类的前一个对象都被覆盖。

我无法弄清楚如何解决这个问题。任何帮助将不胜感激。

相关代码

http://www.paste.org/74408

+0

谁,何时以及如何向量'point_vector'更改? – vahancho 2014-08-29 10:19:57

+0

@vahancho我编辑了我的问题。请参见。 – 2014-08-29 10:26:38

+1

你应该在问题本身中提供一个简短的完整例子。外部链接不好,或者如果您使用的是adblock,那么它们就是不会加载的令人讨厌的页面。 – 2014-08-29 10:50:37

回答

0

您的代码传播出去太多了,你应该尝试创建适当的类...

据我所看到的,“point_vector”说被推回来的项目是一个本地变量声明/定义在point.cpp

你没有发布的point.h文件,但我猜测它有point_vector定义为t他指出......但你没有在cpp中使用point_vector成员变量,你正在使用本地声明的变量

如果像你的问题上的评论所说,你发布了更多完整的代码部分。