价值从QVector消失

时间:2015-04-29 12:43:00

标签: c++ qt dictionary vector

我的QMap里面有QVector

QMap<QString, QMap<QGraphicsView*, QVector<float>>> graphs;

我正在尝试执行此代码:

QVector<float>* graphValues = &(graphs.values()[i - values.count()].values()[0]);

graphValues->push_back(1234);

qDebug() << "=== Debug messages ===\r\n";
qDebug() << "i - values.count() = " << i - values.count();
qDebug() << "graphValues = " << graphValues;
qDebug() << "*graphValues = " << *graphValues;
qDebug() << "graphs = " << graphs;
qDebug() << "graphs.values()[i - values.count()].values()[0] = " << graphs.values()[i - values.count()].values()[0];

它给了我输出:

i - values.count() =  0
graphValues =  0x2000e90
*graphValues =  QVector(1234)
graphs =  QMap(("tempgraph", QMap((QGraphicsView(0x1fb1920) ,  QVector() ) ) ))
graphs.values()[i - values.count()].values()[0] =  QVector()

那么,我的价值在哪里?使用指针我在graphs中等待我的值,但它会消失。

1 个答案:

答案 0 :(得分:5)

QMap::values()方法返回临时对象。您无法通过更改原始数据来更改原始数据。你应该使用迭代器,或者以某种方式使用QMap::operator[]