目录
一、学习的知识点
一)自定义视图、场景、图元类
一)1 创建类
自定义视图、场景、图元类时,先选择继承QObject基类,让系统自动生成QObject(自己写的会出现奇怪的错误),然后在生成的头文件把继承的QObject改成需要的,如QGraphicsView等等。
一)2 图元类的实现
自定义的图元类需要实现两个虚函数,分别是 :
- QRectF boundingRect() const; 碰撞检测,图元以图片中心为原点,需要返回图片的边框
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr); 重绘函数
- 重绘函数中的drawPixmap需要五个参数
painter->drawPixmap(0-image.width()/2,0-image.height()/2,image.width(),image.height(),image);
一)3 advance槽函数
advance槽函数在场景类和图元类都有,在利用场景类的对象调用advance函数时,会执行两次该场景中所有的图元项的advance函数,第一次调用时phase为0,告诉所有图元项即将移动,第二次phase为1,执行移动。