初探 Qt Opengl【2】

简介: 最近在研究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函数是不可以的



目前就这么多了



下面是拍的几张图image.pngimage.pngimage.png

目录
相关文章
|
3月前
QT4.7版本的OPENGL的3D旋转模型例子
QT4.7版本的OPENGL的3D旋转模型例子
QT+OpenGL鼠标操作和模型控制
光线追踪法 从鼠标投射 3D 射线, 通过摄像机,进入场景,然后检查该光线是否与某个对象相交。
239 0
|
4天前
|
Linux
关于linux的qt发布(linuxdeployqt)中opengl版本过高的解决
关于linux的qt发布(linuxdeployqt)中opengl版本过高的解决
|
3月前
|
机器学习/深度学习 API vr&ar
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
528 4
|
3月前
|
Linux API iOS开发
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
114 0
|
3月前
Qt+OpenGL 打砖块游戏
Qt+OpenGL 打砖块游戏
49 0
|
异构计算
QT+OpenGL高级数据和高级GLSL
● OpenGL中的缓冲区 对象管理特定的GPU内存 ● 在将缓冲区绑定到特定的缓冲区目标时候赋予它意义 ● OpenGL在内部会保存每个目标(缓冲区)的引用,并且根据目标以不同的方式处理缓冲区。
121 0
QT+OpenGL高级数据和高级GLSL
|
3月前
|
数据可视化 API vr&ar
qt“五彩斑斓“ opengl
qt“五彩斑斓“ opengl
|
存储 异构计算
QT+OpenGL深度测试
在前面的文章中,我们渲染了一个3D箱子,并且运用了深度缓冲来防止阻挡的面渲染到其他面的前面。 现在大部分的GPU都提供一个叫做提前深度测试(Early Depth Testing)的硬件特性。提前深度测试允许深度测试在片段着色器之前运行。只要我们清楚一个片段永远不会是可见的(它在其他物体之后),我们就能提前丢弃这个片段。
100 0
QT+OpenGL 摄像机
OpenGL本身没有摄像机的定义,但是我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉。
138 0