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

35 篇文章 23 订阅
13 篇文章 6 订阅

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/114710650
长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

合作案例专栏:案例分享(体验Demo可下载,只定制)


需求

  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

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/114710650

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙红胖子Qt(长沙创微智科)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值