当前位置 博文首页 > fearlazy:Qt图形视图框架直线图元QGraphicsLineItem

    fearlazy:Qt图形视图框架直线图元QGraphicsLineItem

    作者:[db:作者] 时间:2021-06-18 18:37

    ?

    文章可能被更新,?最新地址:http://www.fearlazy.com/index.php/post/106.html

    ?

    ?

    QGraphicsLineItem直接继承于图元基类QGraphicsItem,它的使用也十分简单。提供的设置接口很少,一个setLine和一个setPen就没了。

    blob.png

    对于QGraphicsLineItem的使用真没什么可说的。不过值得一提的是QGraphicsLineItem的形状计算的很不错。什么叫形状不错?这就要从图元的祖先QGraphicsItem说起了,QGraphicsItem提供了一个虚函数virtual QPainterPath shape() const,用于返回图元的形状。shape函数的返回值是QPainterPath,可以很精确的表达出图元的轮廓。 图元的轮廓会直接影响到图元的事件,比如鼠标点击事件,当鼠标点击在图元的轮廓内才会触发图元的鼠标点击事件。QGraphicsLineItem虽然看上去只是一条直线,实际上它的形状是一个多边形,因为计算时需要把pen的宽度考虑进去。

    ?

    QGraphicsLineItem很好的实现了shape()函数,可以通过它的hover事件来看看效果。为了更好的看清效果我们重写了QGraphicsView类,在滚轮事件中对视图进行缩放。

    blob.png

    ?

    接着重写QGraphicsLineItem的两个hover事件。

    blob.png

    要想获取图元的hover事件还需要调用函数setAcceptHoverEvents(true)。?

    运行程序后放大视图来查看效果:

    blob.png

    可以看到鼠标刚进入直线图元的shape区域内就变成绿色了,确实计算的很准确。

    ?

    下一篇:没有了