prepareForGeometryChange
prepareForGeometryChange,prepareForGeometryChange,prepareForGeometryChange重要的事情说三遍,这段时间一直在用graphicsview,graphicsScene,graphicsitems等等这些个东西,主要我要使用这个做一个公式编辑器。
- 首先要知道的,在graphicsView这个组件中,他的鼠标移动事件是已经经过改写的了,所以呢,在上面的item如果你不改写鼠标事件的话,那么就可以移动在上面产生的item组件,这个无疑是非常好的,但是也有可能带来问题
- 问题主要就是,我两个物体之间的连线需要随着物体的移动而移动,但是在进行拖动的时候,这些个连线会产生幻影,并且在删除的时候会产生更多的问题,例如上面的内存报错
- 这个问题真的困扰了我很久了,一直在查阅资料,发现这种错误大家一个人有一个人的说话,但是终于让我找到了解决办法
- 关于prepareForGeometryChange这个函数我就不详细介绍了,解决的问题是:如果你要拖动一个物体的话,或者说让一个物体的形状进行快速的改变,例如我这个线,那就会产生各种各样意想不到的问题,例如内存错误。。。因为在拖动的时候,会产生很多的野指针,当你在删除控件的时候就会导致删除了一个并不存在的东西,或者原来的指针为空等等问题
6.当然QT很人性化,他为了解决这个问题,就自带了一个prepareForGeometryChange函数,在你需要改变物体的形状的时候,一定要预先调用这个函数,完美解决问题。