> 文档中心 > Qt Graphics系列之QGraphicsObject自定义图元

Qt Graphics系列之QGraphicsObject自定义图元


自定义图元

  1. 需要自定义图元类且继承QGraphicsObject
  2. 自定义类中需要实现如下两个函数(由于)
//绘制函数,在该函数中绘制自定义图元,该函数在窗口变化时调用(窗口大小改变、窗口最大化、最小化,还原时调用)void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);//参数解释//painter:画家对象,使用该对象绘制需要绘制的图形,当需要绘制多种图案时,直接在使用该变量绘制其他图形即可//option:目前我还没使用//widget:可通过该变量获取所绘制区域的大小,从而实现图元的自适应//返回一个QRectF对象,可在paint中获取该函数的返回值设置所绘图的大小(当该函数无返回值时,在paint中绘制的图案无法绘制/显示,本人测试是这样的)QRectF boundingRect() const;

3.使用方法
new一个自定义图元类,然后用QGraphicsScene对象的addItem函数即可显示图像

boundingRect()函数是一个特别蛮特殊的函数,其返回的QRectF和绘制区域相关,若绘制不正确则会导致绘制图元异常(拖动滚动条到某一位置时图元消失;拖动滚动条再拖回时图元不会重绘)

当boundingRect返回值设置不当时:
在我测试的时候,就算其中返回的参数值为变量值,该变量值也不能改变,否则当滚动条存在且拖动滚动条碰到图元/越过图元,再将滚动条拖回原来的位置时,是不会自动调用paint()函数的(可以主动调用scene的update函数实现更新)。

友情提示——哪里看不懂可私哦,让我们一起互相进步吧
(创作不易,请留下一个免费的赞叭 谢谢 ^o^/)

注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。
注:如有侵权,请联系作者删除

字库吧