**问题**:在MainWindow.cpp中实现一个函数setarrayframe(unsigned char *framedata)用于数据生成,将生成的数据放入unsigned char 数组中,将数组插入QMap中,每一帧对应一个数组,后面新插入的数组会覆盖掉之前的插入的数组,即所有帧key对应的value都是最后一次插入数组的值;
**原因**:`QMap<int,unsigned char*> framemap;
framemap发生了浅拷贝,当arrayframe(数组)改变后,之前存储的arrayframe的值也发生了改变。
**解决方案**:在mianwindow.h头文件中声明QList,在QMap中嵌入QList代替数组存储帧数据;
```cpp
"mainwindow.h"
typedef QList<int> arrayframelist;
arrayframelist datalist;
QMap<int,arrayframelist> framemap;
```
```cpp
"mainwindow.cpp"
setarrayframe(arrayframe);
datalist.clear();
for (int i=0;i<64;i++) {
datalist.append(arrayframe[i]);
}
framemap.insert(framescount,datalist);//将新设置的当前帧放入framemap中
```