案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)

需求

  1.创建原始数据项目,项目下可以创建产品,产品自动创建四个阶段,阶段可以导入各自数据格式的原始文件;

  2.创建原始数据项目和产品的时候,参数配置文件、成功配置文件、成功数据也会创建对应的项目和产品;

  3.树形图,支持创建项目、修改项目、删除项目;

  4.树形图,项目下,支持创建产品、修改产品删除产品;

  5.树形图,产品下,自动产生四个阶段,支持创建新的阶段,修改原有阶段,删除某个阶段;

  6.大批量导出单个项目产品阶段的文件,并动态显示导入过程;’

  7.可对原始数据进行二维图的数据分布分析,并可动态调整文件和文件对应的参数;

  8.可对成功数据进行多文件综合分析,包含各文件和各文件下的解析格式,生成对应的关联关系;

  9.在使用二维图、散点图、正态分布图进行分析时,支持区域缩放,支持显示隐藏,支持截图保存,支持导出当前正在显示的二维图原始数据(隐藏的点和行数据不导出)

  10.使用sqlite3数据库;

  11.支持各windows版本和国产银河麒麟系统;

  12.其他复杂数据处理逻辑、小功能;


Demo

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  


头文件源码

#ifndef DATAANALYSISWIDGET_H
#define DATAANALYSISWIDGET_H
#include <QWidget>
#include <QButtonGroup>
#include <QFileDialog>
#include <QTreeWidgetItem>
#include <QStringListModel>
#include "DatabaseManager.h"
#include "TreeWidget.h"
#include "MyMessageBox.h"
#include "TreeWidgetDialog.h"
#include "PreDataDialog.h"
#include <QPoint>
class MainWindow;
namespace Ui {
class DataAnalysisWidget;
}
class DataAnalysisWidget : public QWidget
{
    Q_OBJECT
public:
    explicit DataAnalysisWidget(QWidget *parent = 0);
    ~DataAnalysisWidget();
public:
    void setMainWindow(MainWindow *pMainWindow);
protected:
    void initData();                                                            // 初始化数据
    void loadConfig();                                                          // 加载配置文件
    void saveConfig();                                                          // 存储配置文件
protected slots:    // 按钮选择槽函数
    void slot_buttonHeaderToggled(QAbstractButton *pAbstractButton, bool pressed);                  // 顶部按键
    void slot_buttonToggled(QAbstractButton *pAbstractButton, bool pressed);                        // 右侧按键:数据类型
protected slots:    // 项目管理树视图
    void slot_contextMenu_trigger(QString text, QTreeWidgetItem *pTreeWidgetItem,  QString path);   // 树状视图选择
    void slot_itemClicked(QTreeWidgetItem *pTreeWidgetItem, int count, QString path);               // 树状视图点击
protected slots:    // 原始数据树选择视图
    void slot_itemCheckedClicked(QTreeWidgetItem *pTreeWidgetItem, int count, QString path);        // 原始数据选择视图
protected slots:    // 表视图
    void slot_deleteFile(QStringList strList);                                  // 删除文件表
    void slot_exportFile(QString file);                                         // 导出文件
    void slot_exportFile(QStringList fileList);                                 // 导出所有文件
    void slot_preData();                                                        // 数据预处理
    void slot_packageAnalysis();                                                // 包络数据分析
protected slots:    // 成功数据,散点图和正态分布图
    void slot_chartTypeChanged(QString text);                                   // 包络数据分析:切换散点图/正态分布图
    void slot_listViewItemClicked(QModelIndex modelIndex);                      // 包络数据分析:点击选择列
protected:
    void createProject(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 创建项目
    void modifyProject(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 修改项目
    void deleteProject(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 删除项目
    void createProduct(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 创建产品
    void modifyProduct(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 修改产品
    void deleteProduct(QString text, QTreeWidgetItem *pTreeWidgetItem);         // 删除产品
    void createStage(QString text, QTreeWidgetItem *pTreeWidgetItem);           // 创建阶段
    void modifyStage(QString text, QTreeWidgetItem *pTreeWidgetItem);           // 修改阶段
    void deleteStage(QString text, QTreeWidgetItem *pTreeWidgetItem);           // 删除阶段
    void deleteFile(QString text, QTreeWidgetItem *pTreeWidgetItem);            // 删除文件
    void importOriginData(QString text, QTreeWidgetItem *pTreeWidgetItem);      // 导入原始数据(其他几个数据也同用此函数)
    void exportOriginData(QString text, QString file);                          // 导出原始数据(其他几个数据也同用此函数)
    void exportOriginData(QString text, QStringList fileList);                  // 导出原始数据(其他几个数据也同用此函数),右键表导出所有
    void updatePieChartFiles(QTreeWidgetItem *pTreeWidgetItem, int count);      // 更新饼图
    void updateTableAutoColumnContent(QTreeWidgetItem *pTreeWidgetItem);        // 更新自动列的table
protected:
    void intoPreData(QStringList strList = QStringList());                      // 切换至预处理
    void updatePreData(QString project, QString product, QString stage, QString file);
    bool intoAnalysisData();                                                    // 切换至包络数据分析
    bool updateAnalysisData(QString project, QString product, QString stage);   // 更新分析数据
protected:
    void loadProject();                                                         // 加载项目(根据选择的按钮判断)
    void loadProject(int index);                                                // 加载指定项目(0,1,2,3)
    void updateTree();                                                          // 更新树视图
    void updateTable();                                                         // 更新表格
    void updatePieChart();                                                      // 更新饼图
    void updateTableAutoColumn();                                               // 更新表格动态列
protected:
    void debugProject();                                                        // 调试工程
protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);
private slots:
    void on_pushButton_export_clicked();                                        // 导入按钮
    void on_pushButton_import_clicked();                                        // 导出按钮
    void on_checkBox_firstAsAixsX_clicked(bool checked);                        // 第一列是否作为X轴
    void on_pushButton_succeeDataPath_clicked();                                // 成功数据路径切换按钮
    void on_pushButton_preDealPath_clicked();                                   //
private slots:
    void on_pushButton_exit_clicked();          // 退出
    void on_pushButton_hide_clicked();          // 隐藏
    void on_pushButton_min_clicked();           // 最小化按钮
    void on_pushButton_max_clicked();           // 最大化按钮
    void on_pushButton_search_clicked();        // 搜索按钮
    void on_pushButton_clear_clicked();         // 清空按钮
private:
    Ui::DataAnalysisWidget *ui;
    QButtonGroup _buttonGroup;
    QButtonGroup _buttonGroupHeader;
    DatabaseManager _databaseManager;           // 数据库管理类
    QList<Project> _listProject;                // 项目信息数据结构
    QList<FileInfo> _listFileInfo;              // 文件信息数据结构
    QList<FilePieChart> _listFilePieChart;      // 饼图数据结构
    QString _content;                           // 辅助变量
    TreeWidget *_pTreeWidget;                   // 树状空间
    QDialog *_pDialog;                          // 树状对话框
    QPoint _originPoint;                        // 辅助变量
    QPoint _lastPoint;                          // 辅助变量
    bool _leftButtonPressed;                    // 辅助变量
    QString _lastDir;                           // 记录最后一次打开目录
    int _msgWidth;                              // 消息对话框宽度
    int _msgHeight;                             // 消息对话框高度
    MyMessageBox *_pMyMessageBox;               // 全局消息对话框(用于加载数据)
    QString _cfgFile;                           // 配置文件路径
    MainWindow *_pMainWindow;                   // MainWindow窗口指针
};
#endif // DATAANALYSISWIDGET_H


相关文章
|
24天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
64 2
|
2月前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
421 2
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
构建高效数据分析系统的关键技术
【10月更文挑战第5天】构建高效数据分析系统的关键技术
47 0
|
2月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
403 60
|
1月前
|
存储
文件太大不能拷贝到U盘怎么办?实用解决方案全解析
当我们试图将一个大文件拷贝到U盘时,却突然跳出提示“对于目标文件系统目标文件过大”。这种情况让人感到迷茫,尤其是在急需备份或传输数据的时候。那么,文件太大为什么会无法拷贝到U盘?又该如何解决?本文将详细分析这背后的原因,并提供几个实用的方法,帮助你顺利将文件传输到U盘。
|
2月前
|
存储 Windows
(13) Qt事件系统(two)
文章详细介绍了Qt事件系统,包括事件分发、自定义事件、事件传播机制、事件过滤以及事件与信号的区别。
97 3
(13) Qt事件系统(two)
|
2月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
2月前
|
存储 搜索推荐 数据库
运用LangChain赋能企业规章制度制定:深入解析Retrieval-Augmented Generation(RAG)技术如何革新内部管理文件起草流程,实现高效合规与个性化定制的完美结合——实战指南与代码示例全面呈现
【10月更文挑战第3天】构建公司规章制度时,需融合业务实际与管理理论,制定合规且促发展的规则体系。尤其在数字化转型背景下,利用LangChain框架中的RAG技术,可提升规章制定效率与质量。通过Chroma向量数据库存储规章制度文本,并使用OpenAI Embeddings处理文本向量化,将现有文档转换后插入数据库。基于此,构建RAG生成器,根据输入问题检索信息并生成规章制度草案,加快更新速度并确保内容准确,灵活应对法律与业务变化,提高管理效率。此方法结合了先进的人工智能技术,展现了未来规章制度制定的新方向。
39 3
|
2月前
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
91 0
(12)Qt事件系统(one)
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
191 1
Qt(C++)开发一款图片防盗用水印制作小工具

推荐镜像

更多