程序运行截图如下:

这里的主要框架为Q3DScatter

首先是设置范围,免得随机生成坐标时,坐标系不停的变:

使用QScatter3DSeries生成一串的item。方便显示在m_graph中

使用QScatterDataItem进行元素的操作。

逻辑很简单把

旋转

关键代码

#include "widget.h"
#include "ui_widget.h"
#include <QtDataVisualization/QScatter3DSeries>
#include <QDebug>
#include <QThread>
#include <QTime>
#include <QTimer>
#include <QMessageBox>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle("CSDN IT1995");m_graph = new Q3DScatter();m_graph->axisX()->setRange(-10, 10);m_graph->axisY()->setRange(-10, 10);m_graph->axisZ()->setRange(-10, 10);QWidget *container = QWidget::createWindowContainer(m_graph);qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));if (!m_graph->hasContext()) {QMessageBox msgBox;msgBox.setText("Couldn't initialize the OpenGL context.");msgBox.exec();return;}//添加数据QScatter3DSeries *item = new QScatter3DSeries();item->setMesh(QAbstract3DSeries::MeshUserDefined);item->setUserDefinedMesh(":/img/1cube.obj");m_graph->addSeries(item);//设置到控件上QHBoxLayout *hLayout = new QHBoxLayout();hLayout->addWidget(container, 1);ui->widget->setLayout(hLayout);//生成线,数据:QScatterDataArray *dataArray = new QScatterDataArray;dataArray->resize(5);QScatterDataItem *ptrToDataArray = &dataArray->first();for(int i = 0; i <= dataArray->size(); i++){ptrToDataArray->setPosition(QVector3D(0, i, 0));ptrToDataArray++;}item->dataProxy()->resetArray(dataArray);//让其随机移动m_timer = new QTimer(this);connect(m_timer, &QTimer::timeout, [=](){QScatterDataItem *ptr = &dataArray->first();for(int i = 0; i < dataArray->size(); i++){ptr->setPosition(QVector3D(qrand()%8 > 4 ? qrand()%8 : -qrand()%8, qrand()%8 > 4 ? qrand()%8 : -qrand()%8, qrand()%8 > 4 ? qrand()%8 : -qrand()%8));ptr++;}item->dataProxy()->resetArray(dataArray);});m_timer->start(2000);//让其自身旋转m_rotationTimer = new QTimer(this);connect(m_rotationTimer, &QTimer::timeout, [=]() mutable{QScatterDataItem *ptr = &dataArray->first();for(int i = 0; i < dataArray->size(); i++){QQuaternion ruaternion = QQuaternion::fromAxisAndAngle(QVector3D(0.0f, 0.0f, 1.0f), qrand()%600);ptr->setRotation(ruaternion);ptr++;}item->dataProxy()->resetArray(dataArray);});m_rotationTimer->start(100);
}Widget::~Widget()
{qDebug() << "Widget::~Widget()";delete m_graph;delete ui;
}

源码打包下载地址:

https://github.com/fengfanchen/Qt/tree/master/3D%20move%20rotation

Qt笔记-Q3DScatter中元素的移动和旋转相关推荐

  1. Qt笔记-Q3DScatter及QCustom3DItem的基本使用

    这里加载了obj文件.程序运行截图如下: 感觉还不错,Qt自己封装了OpenGL,Qt开发者只需要依靠逻辑进行调用即可. 关键代码如下: using namespace QtDataVisualiza ...

  2. Qt笔记-profile中基本配置(获取环境变量、设置生成路径、包含文件)

    配置好环境变量后通过在profile文件中通过$$(xxx)进行获取. 通过DESTDIR配置生成目标文件的路径. 使用INCLUDEPATH包含文件.如下: QT += guiINCLUDEPATH ...

  3. Qt登录服务器验证,QT笔记:QT模拟网页交互过程中的token验证机制

    在平时上网时,我们登陆一些网站后,为了校验客户端的身份.保障数据的安全性,服务器会给浏览器发送一个token值,这个token值就是一张令牌,你可以把它看成一张通行证,有了它你才能对该网站进行提交数据 ...

  4. WebQML笔记-qml获取canvas中元素是否被按下

    以前出了几个用QWebView,获取html前端数据的博文, 使用QWebElement可以直接获取html中元素的填充的值. 在此不在多提.这个是纯QML获取canvas中元素是否被按下的思路. 这 ...

  5. Qt模型视图中的委托

    文章目录 1 初探QT模型视图中的委托 2 自定义委托 3 深度解析视图与委托 3.1 实例1:自定义视图显示方式 3.2 实例2:自定义视图显示方式提升用户体验 1 初探QT模型视图中的委托 首先来 ...

  6. 02黑马QT笔记之完全手写Hello World

    02黑马QT笔记之完全手写Hello World 1 步骤: 1 新建项目. 2 选择其他项目->空项目. 3 在空项目中添加QT +=widgets //代表使用窗口基类. 4 右击项目名字- ...

  7. Java笔记(学习中。。)

    Java笔记 eclipse的使用 常用的dos指令 预备知识 基本语法 变量 关于字符型 关于String 进制转换 运算符 流程控制 数组 数组的内存解析: 数组的Arrays工具类 面向对象 对 ...

  8. PyQt5的笔记(中-4)

    PyQt5的笔记的其他文章链接: (1条消息) PyQt5的笔记(上)_我行我素,向往自由的博客-CSDN博客 PyQt5的笔记(中-1)_我行我素,向往自由的博客-CSDN博客 (1条消息) PyQ ...

  9. c#学习笔记05-treeview中添加图标

    创建树目录前面在学习笔记03中已经提到过 即树目录数据从XML文档中获取 添加图标主要用到ImageList控件 1.ImageList控件 在树目录对应存在的窗体中添加此控件 添加图标: 2.tre ...

最新文章

  1. django 增加验证邮箱功能
  2. 百度神马搜狗360网站地图sitemap,主动提交推送插件
  3. python简易木马(一)
  4. Elasticsearch和MongoDB对比
  5. 【软件构造】(转) 设计模式
  6. 2011-05-20
  7. 从真实项目中抠出来的设计模式——第二篇:过滤器模式
  8. [SpringBoot2]@MatrixVariableUrlPathHelper
  9. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类
  10. document.compatMode的CSS1compat
  11. 随机抽样java_实现随机抽样【随机数生成问题】
  12. 某位程序猿柬埔寨开发offer到手,薪资翻倍,去吗?网友:面向阎王编程...
  13. presume_presume是什么意思_presume中文意思_presume英译汉_英汉词典
  14. 【重识 HTML + CSS】CSS 特性
  15. linux压缩命令gzip_Linux gzip命令示例
  16. Tomcat日志设置
  17. [匈牙利算法] 洛谷 P1640 连续攻击
  18. TMS320F2837x + Spartan6/国产FPGA低成本高实时注塑机运动控制器软硬件设计方案
  19. kubernetes CRI接口
  20. 基于WPA的暴力破解(JAVA实现破解WIFI)

热门文章

  1. windows xp 下使用 windows 2003的远程桌面
  2. 打怪升级,在线练习编程的神器!
  3. 0基础怎么做可视化大屏?2种可以节省95%时间的方法教给你
  4. 【转载】那么明亮的sz4j
  5. 虽然有失落的即时通讯
  6. Windows XP下Service的编程入门[2]
  7. 点赞!一个程序员花了14小时寻找问题疫苗的流向
  8. 12月10日习题答案大剖析!小伙伴们再接再厉
  9. 台式计算机内存是什么意思,电脑提示计算机内存不足是什么意思
  10. OpenCV中直方图对比