若该文为原创文章,转载请注明原文出处
本文章博客地址: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