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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 案例分享: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


相关文章
|
4月前
Qt类结构分析
Qt类结构分析
69 3
|
2月前
|
存储 Linux C语言
(2)Qt中的字符串类型
本文介绍了Qt中的字符串类型QByteArray和QString,包括它们的构造函数、数据操作方法、查找操作、遍历操作以及与其他类型之间的转换,并解释了它们之间的区别。
153 5
(2)Qt中的字符串类型
|
2月前
|
存储 Windows
(13) Qt事件系统(two)
文章详细介绍了Qt事件系统,包括事件分发、自定义事件、事件传播机制、事件过滤以及事件与信号的区别。
106 3
(13) Qt事件系统(two)
|
2月前
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
94 0
(12)Qt事件系统(one)
|
4月前
|
API
Qt绘图之Paint系统
Qt绘图之Paint系统
68 2
|
4月前
QT 软件打包为一个单独可执行.exe文件流程
QT 软件打包为一个单独可执行.exe文件流程
928 0
|
4月前
从源码角度分析Qt元对象系统2
从源码角度分析Qt元对象系统
61 0
|
4月前
|
存储
从源码角度分析Qt元对象系统1
从源码角度分析Qt元对象系统
88 0
|
4月前
|
数据安全/隐私保护
【qt】考试系统项目
【qt】考试系统项目
49 0
|
24天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
72 4
数据分析的 10 个最佳 Python 库

推荐镜像

更多
下一篇
DataWorks