需求
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