初探 Qt Opengl【2】

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

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

有兴趣的可以交流

 

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

 

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

 

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

 

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

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

具体代码如下:

 


  
  1. QPainterPathpath;
  2. QPolygonFpolygon;
  3. polygon<<QPointF(10,20)<<QPointF(30,20)<<QPointF(20,0)<<QPointF(10,20);
  4. path.addPolygon(polygon);
  5. QGraphicsItem*item_My=scene->addPath(path,QPen(QColor(0,255,0),3,Qt::SolidLine,Qt::FlatCap,Qt::MiterJoin),QBrush(QColor(0,255,0)));
  6. item_My->setFlag(QGraphicsItem::ItemIsSelectable,true);
  7. item_My->setFlag(QGraphicsItem::ItemIsMovable,true);
  8. 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

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

全部回复

上滑加载中

设置昵称

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

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

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