摘要:
Qt中的代理是用于常见的QTreeView、QListView和QTableView中的一个小工具,它控制视图中每一项的显示方式。当然Qt还提供了QColumnView可供使用,但是我对它不太熟不知道该视图能不能编辑。为了方便开发者自定义项目的显示方式,减少自定义项目带来的需修改的代码量,Qt提供了 阅读全文
摘要:
Qt没有内置的发光效果,只有一个QGraphicsDropShadowEffect类可以对整个控件产生阴影(可近似为外发光)效果。此处作者整理了如何用QPainter手工绘制形状的内发光或外发光效果。本文主要涉及到QPainter类中的图像混合模式技巧。下面允许我把Qt帮助中的内容复制过来供参考。 阅读全文
摘要:
本例依旧是改变3D视角。不同的是这个是视野位置不变而只改变观察方向。相当于一个人站在原地不动,旋转脑袋看周围的东西。测试的条件是VS2017和Qt5.9。主要的知识点就是欧拉角的计算。下面是效果图: 头文件: class QOpenGLTexture; class QOpenGLBuffer; cl 阅读全文
摘要:
在3D显示中,有Model矩阵、View矩阵和Project矩阵。简称为MVP矩阵。这里实现的是改变View矩阵中的观察点的位置,视野中心不变。亦即站在一个圆环的不同地方朝圆心观察。本文显示的是一个平面(地面)上面悬浮一个四面体,鼠标按下移动来改变观察点和方向。关于摄像机姿势的概念可以参考以下网页内 阅读全文
摘要:
对于凸函数${ f \left( x \right) }$。不同书里的凸函数定义可能不一样,这里的凸函数指的是函数曲线向下凹陷的函数,有些书里叫它下凸函数。即函数的一阶导数单调递增,二阶导数大于等于0且不全为0。设${ \alpha \in \left[ 0,1 \right] }$则有: $${ 阅读全文
摘要:
直接给出一个例子供参考。根据我对参考代码的理解,本例是点光源的模型。如果想实现其它如:平行光源或锥形光源需要自己建模。此例子参考了以下博文中公开的代码并做了整理: Qt::QOpenGLWidget渲染带光照的立方体_D_Guco的博客-CSDN博客 这里把立方体换成了四面体,贴图也换成了顶点的颜色 阅读全文
摘要:
本文实现了曲面的正反面贴不同的图片。方法是利用GLSL语言中的内置变量gl_FrontFacing区分平面的正面或反面。该变量在渲染正面时为true,反面为false。完整的GLSL语言相关内容可以参考以下链接: GL Shader Language(GLSL)详解-基础语法 - 知乎 (zhihu 阅读全文
摘要:
本文主要内容是关于QOpenGLWidget的使用。此控件用于代替旧的QGLWidget类。关于此类的使用方法可以参考Qt帮助相关内容。 glDrawArrays(...)函数参数说明:OpenGL 理解GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN等绘制三角形序列的三种方式_匆 阅读全文
摘要:
本功能的实现主要依托于Qt的拖拽操作。从本文可以学到Qt的拖拽机制,自定义QMimeData的数据类型,和自定义的QGraphicsEffect效果。本文的视觉特效是应用于拖拽的时候指示当前鼠标的位置和拖拽结果新标签页会放置在当前窗口的第几个标签页之后。以下是窗口的效果图片,为了方便标签是用按钮做的 阅读全文
摘要:
实现自定义特效的方法一般是继承QGraphicsEffect类,重写它的draw(...)函数。如果特效需要扩展目标的外矩形则还要重写boundingRectFor(...)函数。使用时用QWidget::setGraphicsEffect(...)函数把特效加到控件上就行了。在不扩展目标外矩形的情 阅读全文