Qt|C++-最简单的OpenGL(变颜色的三角形)
程序运行截图如下:
代码如下:
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(变颜色的三角形)相关推荐
- html 如何使表格一列都变颜色的简单方法!!
html怎么让一列变颜色用到属性colgroup 重点我都加粗了!! <colgroup span="3" bgcolor="yellow">&l ...
- 用Qt写一个简单的音乐播放器(七):界面美化(QSS样式表)
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
- 原生实现点击li变颜色
实现简单的点击li变颜色 <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...
- QT tableWidget给单个表格添加背景颜色
QT tableWidget给单个表格添加背景颜色 代码示例 QWidget *widget = new QWidget(); QString wStyle = QString("backg ...
- QT笔记--嵌入式QT交叉编译与移植(含OpenGL ES2)
介绍 本文记录了QT交叉编译并移植到开发板的过程,并在虚拟机上用QTcreater 开发程序,到开发板上运行.其中重点解决了一些过程中的BUG和坑. 准备工作 1.一个ubuntu系统的电脑(或虚拟机 ...
- 鼠标经过时,地图上的每个城市变颜色并且有提示框
今天做一个项目,一个省份的地图,在鼠标经过每个城市时,相对应的城市区域变颜色,并且弹出一个对话框.此对话框的左下角还有一个尖状的图形指向该城市(不好意思,我的电脑不能上传图片,大家可以看一下代码就可以 ...
- Qt中使用GLEW进行OpenGL开发
Qt中使用GLEW进行OpenGL开发(Windows平台) 为什么要使用GLEW 使用VS创建Qt项目 设置Widget 重新实现paintEngine 添加GLEW库到工程 设置OpenGL上下文 ...
- linux qt小型计算器,Qt实现一个简单的计算器
Qt实现一个简单的计算器 作者:hackett 微信公众号:加班猿 一.UI界面版 运行效果:输入num1和num2选择+-*/点击计算即可 UI界面设计: 3个lineEdit(lineEditNu ...
- Ubuntu 安装 Qt 开发环境 简单实现
2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 安装 Qt 开发环境 简单实现是本文要介绍的内容,内容很短,取其精华,详细介绍Qt 类库的说明,先来看内容. 一 ...
最新文章
- “智慧血联网平台”亮相军民融合技术装备博览会
- [LeetCode] Longest Palindromic Substring
- 实例化servlet的几种方式
- ***CI查询辅助函数:insert_id()、affected_rows()
- echarts x轴像直尺一样设置刻度_MATLAB作图实例:6:指定轴刻度值和标签
- 从veth看虚拟网络设备的qdisc
- structs2 result type介绍
- docker启动redis并使用java连接
- mysql游标触发器批量_MySQL游标和触发器
- abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发
- opencv 最大内接矩形_OpenCV之二值图像分析 – 寻找最大内接圆
- Mybatis拦截器
- 2016 工作、生活与得失
- html5 css3时间特效,css3实现垂直时间轴特效代码
- 大佬带你看源码!BTAJ大厂最新面试题汇集,已拿offer附真题解析
- Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进
- 404页面该怎么做?
- 「时序数据库」时间序列数据与MongoDB:第一部分-简介
- 独作论文登数学顶刊,浙大女神校友再被提起:32岁在贵州深山投稿,一家出两位院士...
- 记录:谷歌地图google map api实现基本测距功能
热门文章
- 利用SQL*Loader将 Excel 数据导出到 Oracle 数据库中
- 资深程序员的笔记:工作多年对于编程语言的理解,新手建议了解!
- Visual Studio中相对路径中的宏定义,你不了解的宏定义都在这里!
- 数据驱动科技赋能,东吴证券打造数据中台“九大能力”
- 帆软助力惠科集团产值提升1%以上,带来上亿元数据价值
- 今天的我叫史努比的飞鸽传书
- 12句让人心疼的话 哪一句说到你心里了?
- FTP常用的73个基本用法:
- 分分钟甩Word几条街,Python编辑公式竟可以如此简单,你都知道吗?
- 第三节:快速编译TypeScript,提高开发效率