程序运行截图如下:

代码如下:
MyFrisstMSVCQt.h

#pragma once#include <QtWidgets/QWidget>
#include "ui_MyFristMSVCQt.h"class MyFristMSVCQt : public QWidget
{Q_OBJECTpublic:MyFristMSVCQt(QWidget *parent = Q_NULLPTR);void timerEvent(QTimerEvent *event);private:Ui::MyFristMSVCQtClass ui;
};

MyGLWidget.h

#pragma once#include <QOpenGLWidget>
#include <QOpenGLFunctions>class MyGLWidget:public QOpenGLWidget,protected QOpenGLFunctions
{Q_OBJECT
public:MyGLWidget(QWidget *parent = 0);~MyGLWidget();void setRGB_red(const int value);void setRGB_blue(const int value);void setRGB_green(const int value);protected:void initializeGL();void paintGL();void resizeGL(int w, int h);protected:int m_redValue;int m_blueValue;int m_greenValue;
};

main.cpp

#include "MyFristMSVCQt.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MyFristMSVCQt w;w.show();return a.exec();
}

MyFristMSVCQt.cpp

#include "MyFristMSVCQt.h"
#include "ui_MyFristMSVCQt.h"#include <QTimer>
#include <QDebug>
#include <QTime>MyFristMSVCQt::MyFristMSVCQt(QWidget *parent): QWidget(parent)
{ui.setupUi(this);this->setWindowTitle("MyFirstOPenGL");qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));startTimer(200);
}void MyFristMSVCQt::timerEvent(QTimerEvent *event)
{Q_UNUSED(event)int numRed = qrand() % 256;int numGreen = qrand() % 256;int numBlue = qrand() % 256;ui.openGLWidget->setRGB_blue(numBlue);ui.openGLWidget->setRGB_green(numGreen);ui.openGLWidget->setRGB_red(numRed);ui.openGLWidget->update();
}

MyFLWidget.cpp

#include "MyGLWidget.h"
#include <gl/GLU.h>
#include <QDebug>MyGLWidget::MyGLWidget(QWidget *parent): QOpenGLWidget(parent)
{
}MyGLWidget::~MyGLWidget()
{
}void MyGLWidget::setRGB_blue(const int value)
{m_blueValue = value;
}void MyGLWidget::setRGB_green(const int value)
{m_greenValue = value;
}void MyGLWidget::setRGB_red(const int value)
{m_redValue = value;
}void MyGLWidget::initializeGL()
{initializeOpenGLFunctions();glMatrixMode(GL_PROJECTION);gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();
}void MyGLWidget::paintGL()
{glClearColor(0.0f, 0.0f, 0.0f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);glColor4ub(m_blueValue, m_greenValue, m_redValue, 255);glVertex3f(-0.2f, -0.2f, -0.5f);glColor4ub(m_redValue, m_greenValue, m_blueValue, 255);glVertex3f(0.2f, -0.2f, -0.5f);glColor4ub(m_greenValue, m_redValue, m_blueValue, 255);glVertex3f(0.0f, 0.2f, -0.5f);glEnd();
}void MyGLWidget::resizeGL(int w, int h)
{Q_UNUSED(w)Q_UNUSED(h)
}

Qt|C++-最简单的OpenGL(变颜色的三角形)相关推荐

  1. html 如何使表格一列都变颜色的简单方法!!

    html怎么让一列变颜色用到属性colgroup 重点我都加粗了!! <colgroup span="3"  bgcolor="yellow">&l ...

  2. 用Qt写一个简单的音乐播放器(七):界面美化(QSS样式表)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  3. 原生实现点击li变颜色

    实现简单的点击li变颜色 <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...

  4. QT tableWidget给单个表格添加背景颜色

    QT tableWidget给单个表格添加背景颜色 代码示例 QWidget *widget = new QWidget(); QString wStyle = QString("backg ...

  5. QT笔记--嵌入式QT交叉编译与移植(含OpenGL ES2)

    介绍 本文记录了QT交叉编译并移植到开发板的过程,并在虚拟机上用QTcreater 开发程序,到开发板上运行.其中重点解决了一些过程中的BUG和坑. 准备工作 1.一个ubuntu系统的电脑(或虚拟机 ...

  6. 鼠标经过时,地图上的每个城市变颜色并且有提示框

    今天做一个项目,一个省份的地图,在鼠标经过每个城市时,相对应的城市区域变颜色,并且弹出一个对话框.此对话框的左下角还有一个尖状的图形指向该城市(不好意思,我的电脑不能上传图片,大家可以看一下代码就可以 ...

  7. Qt中使用GLEW进行OpenGL开发

    Qt中使用GLEW进行OpenGL开发(Windows平台) 为什么要使用GLEW 使用VS创建Qt项目 设置Widget 重新实现paintEngine 添加GLEW库到工程 设置OpenGL上下文 ...

  8. linux qt小型计算器,Qt实现一个简单的计算器

    Qt实现一个简单的计算器 作者:hackett 微信公众号:加班猿 一.UI界面版 运行效果:输入num1和num2选择+-*/点击计算即可 UI界面设计: 3个lineEdit(lineEditNu ...

  9. Ubuntu 安装 Qt 开发环境 简单实现

    2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 安装 Qt 开发环境 简单实现是本文要介绍的内容,内容很短,取其精华,详细介绍Qt 类库的说明,先来看内容. 一 ...

最新文章

  1. “智慧血联网平台”亮相军民融合技术装备博览会
  2. [LeetCode] Longest Palindromic Substring
  3. 实例化servlet的几种方式
  4. ***CI查询辅助函数:insert_id()、affected_rows()
  5. echarts x轴像直尺一样设置刻度_MATLAB作图实例:6:指定轴刻度值和标签
  6. 从veth看虚拟网络设备的qdisc
  7. structs2 result type介绍
  8. docker启动redis并使用java连接
  9. mysql游标触发器批量_MySQL游标和触发器
  10. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发
  11. opencv 最大内接矩形_OpenCV之二值图像分析 – 寻找最大内接圆
  12. Mybatis拦截器
  13. 2016 工作、生活与得失
  14. html5 css3时间特效,css3实现垂直时间轴特效代码
  15. 大佬带你看源码!BTAJ大厂最新面试题汇集,已拿offer附真题解析
  16. Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进
  17. 404页面该怎么做?
  18. 「时序数据库」时间序列数据与MongoDB:第一部分-简介
  19. 独作论文登数学顶刊,浙大女神校友再被提起:32岁在贵州深山投稿,一家出两位院士...
  20. 记录:谷歌地图google map api实现基本测距功能

热门文章

  1. 利用SQL*Loader将 Excel 数据导出到 Oracle 数据库中
  2. 资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!
  3. Visual Studio中相对路径中的宏定义,你不了解的宏定义都在这里!
  4. 数据驱动科技赋能,东吴证券打造数据中台“九大能力”
  5. 帆软助力惠科集团产值提升1%以上,带来上亿元数据价值
  6. 今天的我叫史努比的飞鸽传书
  7. 12句让人心疼的话 哪一句说到你心里了?
  8. FTP常用的73个基本用法:
  9. 分分钟甩Word几条街,Python编辑公式竟可以如此简单,你都知道吗?
  10. 第三节:快速编译TypeScript,提高开发效率