QGraphicsItem::paint () 这个是QGraphicsItem的绘制函数,被调用后就能够刷新界面
QGraphicsItem::update() 的帮助说明如下
This function does not cause an immediate paint; instead it schedules a paint request that is processed by QGraphicsView after control reaches the event loop.
也就是说我主动调用了update(),但并不能保证绘制函数一定被执行,只能等待到QGraphicsView 来调用QGraphicsItem的绘制函数
由此带来了如下问题,我在QGraphicsItem中实现了mousePressEvent和mouseReleaseEvent,并且在这两个函数中分别加载不同的图片,以达到鼠标按下和抬起时显示不同图片的目的。
我在mousePressEvent()、mouseReleaseEvent()和paint ()中分别加了打印,正常的打印结果应该如下
mousePressEvent
paint
mouseReleaseEvent
paint
功能已经实现了,但问题是响应速度不够快,如果我快速的点击然后抬起鼠标,那么paint ()只被调用了一次,打印结果是
mousePressEvent
mouseReleaseEvent
paint
比正常结果少了第二次的paint调用,也就是说我按下鼠标应该刷新的图片,没有刷新出来,只有在我按下鼠标等待大约1秒左右,才会刷新出图片来,这个问题该如何解决呢?谢谢大家!
我用的是qt4.5.2,在windows xp上写的代码,测试无问题,放到wince6上出现的上述现象,我想可能跟cpu速度有关系吧,但应该能通过其它办法解决的