【qt小系统】传感器云平台3D散点图(附源码)

在这里插入图片描述

摘要:本文主要使用QT5,实现了一个传感器云平台的小示例,模拟的是各类传感器的添加,例如:热成像传感器、温度传感器、超声波传感器,模拟添加完成后,会自动将此传感器的三维坐标增加到3D散点图上,3D散点图可以放大缩小。本文主要目的是通过一个小示例,做一些小效果。
文中源码文件【获取方式】:关注公众号:利哥AI实例探险, 给公众号发送 “qt传感器平台”
获取下载方式,关注发送关键字即可获取下载方式,无套路。由于本人能力有限,难免有疏漏之处。

1. 系统演示

传感器云平台

2. 逻辑实现在这里插入图片描述

  1. 使用QT Design拖拽窗口及按钮,并通过CSS设置界面效果。
  2. 主要使用QTableWidget,并作CSS优化
  3. 3D部分主要使用Q3DScatter,Q3DScatter 是 Qt Data Visualization 模块中的一个类,用于创建和管理 3D 散点图。它提供了将数据以三维点云形式可视化的功能,使得用户可以直观地观察和分析三维数据分布。Q3DScatter 在数据可视化、科学研究、工程设计等领域有广泛应用。
    Q3DScatter 提供了许多功能和属性,允许用户自定义和控制 3D 散点图的外观和行为。以下是 Q3DScatter 的一些核心概念:
  • Q3DScatter:表示整个 3D 散点图对象,包含所有的数据点和渲染设置。
  • QScatter3DSeries:表示一组数据点,包含数据点的坐标和其他属性。
  • QScatterDataItem:表示单个数据点,包含 x、y、z 坐标。
  • Q3DTheme:表示 3D 图表的主题,控制图表的配色方案、字体、背景等。
  • QValue3DAxis:表示坐标轴,用于设置轴的范围、标签和刻度等属性。
m_scatter = new Q3DScatter;
// 创建数据代理和系列
m_proxy = new QScatterDataProxy();
m_series = new QScatter3DSeries(m_proxy);
m_scatter->addSeries(m_series);

// 设置主题和效果
m_scatter->activeTheme()->setType(Q3DTheme::ThemeQt);
m_scatter->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftLow);

// 设置背景颜色
m_scatter->activeTheme()->setBackgroundEnabled(true);
m_scatter->activeTheme()->setBackgroundColor(QColor(14, 26, 50)); // 黑色颜色
m_scatter->activeTheme()->setGridEnabled(false); // 禁用网格以增强星空效果

// 设置点的颜色
m_series->setItemSize(0.3f); // 调整点的大小
m_series->setBaseColor(QColor(255, 255, 255)); // 白色点

// 设置视角
m_scatter->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFrontHigh);
m_scatter->scene()->activeCamera()->setPosition(QVector3D(0, 0, 50)); // 设置相机位置
m_scatter->scene()->activeCamera()->setTarget(QVector3D(0, 0, 0)); // 设置目标

// 连接点击事件信号和槽
connect(m_series, &QScatter3DSeries::selectedItemChanged, this, &Dlgradar::handleItemClicked);

在这里插入图片描述

void Dlgradar::addPoint(float x, float y, float z, QString additionalInfo)
{
    QScatterDataItem item;
    item.setPosition(QVector3D(x, y, z));

    // 创建额外信息
    PointInfo info = {x, y, z, additionalInfo};
    m_pointInfoMap[m_proxy->itemCount()] = info;

    m_proxy->addItem(item);
}

在这里插入图片描述

void Dlgradar::handleItemClicked(int index)
{
    // 无效索引
    if (index == -1) {
        return;
    }

    if (m_pointInfoMap.contains(index)) {
        const PointInfo &info = m_pointInfoMap[index];
        QString szLog = QString("(%1, %2, %3)--%4")
                .arg(info.x).arg(info.y).arg(info.z).arg(info.additionalInfo);

        ui->label->setText(szLog);
        qDebug() << "====" << szLog.toUtf8().data();
    }
}

往期文章回顾

【深度学习】物体检测/实例分割/物体追踪/姿态估计/定向边框/图像分类检测演示系统【含源码】【深度学习】YOLOV8数据标注及模型训练方法整体流程介绍及演示
【深度学习】行人跌倒行为检测软件系统【深度学习】火灾检测软件系统
【深度学习】吸烟行为检测软件系统【深度学习】数竹签演示软件系统
【深度学习】菜品目标检测软件系统QT5集成FTP实现文件及文件夹的下载
QT集成开源日志库示例python源码加密之Cython方案简单示例
【python源码加密】Cython针对python工程多层级目录处理办法http服务网络请求如何确保数据安全(含python示例源码)
http请求数据传输时确保完整性和保密性方案(含源码)QT集成百度在线地图JS API实现交互及特定效果
【qt小游戏】小老鼠闯迷宫小游戏(附源码)【qt小系统】传感器云平台3D散点图(附源码)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值