初探 Qt Opengl【2】

举报
DreamLife 发表于 2022/04/15 22:38:25 2022/04/15
3.7k+ 0 0
【摘要】 最近在研究QOPengl QGraphicsView QGraphicsItemQGraphicsScene不过也只是皮毛,也不是做什么技术贴,就是记录一下自己在其中遇到的问题,和自己新学到的东西。 有兴趣的可以交流   目前主要就是利用QGraphicsView 的分层显示,scene的可以容纳数以万计的item &...

最近在研究QOPengl QGraphicsView QGraphicsItemQGraphicsScene不过也只是皮毛,也不是做什么技术贴,就是记录一下自己在其中遇到的问题,和自己新学到的东西。

有兴趣的可以交流

目前主要就是利用QGraphicsView 的分层显示,scene的可以容纳数以万计的item

我的理解scene是一个可以存各种item的容器

View就是将这个容器中的内容让用户可见

在绘制任意图形的时候,我遇到了QpainterPath类

其中QPainterPath中有一个参数是需要QPolygonF类

具体代码如下:


      QPainterPathpath;
          QPolygonFpolygon;
          polygon<<QPointF(10,20)<<QPointF(30,20)<<QPointF(20,0)<<QPointF(10,20);
          path.addPolygon(polygon);
          QGraphicsItem*item_My=scene->addPath(path,QPen(QColor(0,255,0),3,Qt::SolidLine,Qt::FlatCap,Qt::MiterJoin),QBrush(QColor(0,255,0)));
          item_My->setFlag(QGraphicsItem::ItemIsSelectable,true);
          item_My->setFlag(QGraphicsItem::ItemIsMovable,true);
          item_My->moveBy(x,y);
  
 

其中,item_My->setFlag(QGraphicsItem::ItemIsSelectable,true);

    item_My->setFlag(QGraphicsItem::ItemIsMovable,true);

这两行代码是比较重要的,QGraphicsItem默认是将鼠标事件关闭的,

这两行代码使Item可以拖拽,可是选择。

在QGraphicsView的最底层,添加了继承QGLwidget类的opengl绘制函数

出现问题是QGraphicsView无法时时刷新界面

对饮解决办法就是

调用QGraphicsView的Viewport的update函数

如果使用Opengl的update函数是不可以的

目前就这么多了

下面是拍的几张图

练习源代码:http://download.csdn.net/detail/z609932088/9110865

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/48491777

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。