文章可能被更新, 最新地址:http://www.fearlazy.com/index.php/post/106.html
QGraphicsLineItem直接继承于图元基类QGraphicsItem,它的使用也十分简单。提供的设置接口很少,一个setLine和一个setPen就没了。
对于QGraphicsLineItem的使用真没什么可说的。不过值得一提的是QGraphicsLineItem的形状计算的很不错。什么叫形状不错?这就要从图元的祖先QGraphicsItem说起了,QGraphicsItem提供了一个虚函数virtual QPainterPath shape() const,用于返回图元的形状。shape函数的返回值是QPainterPath,可以很精确的表达出图元的轮廓。 图元的轮廓会直接影响到图元的事件,比如鼠标点击事件,当鼠标点击在图元的轮廓内才会触发图元的鼠标点击事件。QGraphicsLineItem虽然看上去只是一条直线,实际上它的形状是一个多边形,因为计算时需要把pen的宽度考虑进去。
QGraphicsLineItem很好的实现了shape()函数,可以通过它的hover事件来看看效果。为了更好的看清效果我们重写了QGraphicsView类,在滚轮事件中对视图进行缩放。