v1.1.0
This commit is contained in:
13
gloab.cpp
Normal file
13
gloab.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "gloab.h"
|
||||||
|
|
||||||
|
QString Gloab::fileName="";
|
||||||
|
QVector<QMap<QString,QString>> Gloab::g_param[4];
|
||||||
|
QMap<QString,QString> Gloab::temData;
|
||||||
|
QMap<QString,bool> Gloab::namelist;
|
||||||
|
QList<QtCharts::QChartView*> Gloab::m_chartViews;
|
||||||
|
QWidget * Gloab::widget;
|
||||||
|
QVector<QString> Gloab::rule;
|
||||||
|
QFile Gloab::file;
|
||||||
|
qint64 Gloab::fileSize;
|
||||||
|
qint64 Gloab::bytesRead;
|
||||||
|
QCompleter *Gloab::completer;
|
33
gloab.h
Normal file
33
gloab.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
//
|
||||||
|
// Created by Sherlock on 2024/8/12.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GLOAB_H
|
||||||
|
#define GLOAB_H
|
||||||
|
|
||||||
|
#include <QChartView>
|
||||||
|
#include <QMap>
|
||||||
|
#include <QVector>
|
||||||
|
#include <QString>
|
||||||
|
#include <QList>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QLineSeries>
|
||||||
|
#include <QCompleter>
|
||||||
|
class Gloab{
|
||||||
|
public:
|
||||||
|
static QString fileName;
|
||||||
|
static QVector<QMap<QString,QString>> g_param[4];
|
||||||
|
static QMap<QString,QString> temData;
|
||||||
|
static QMap<QString,bool> namelist;
|
||||||
|
static QList<QtCharts::QChartView*> m_chartViews;
|
||||||
|
static QWidget *widget;
|
||||||
|
static QVector<QString> rule;
|
||||||
|
static QFile file;
|
||||||
|
static qint64 fileSize;
|
||||||
|
static qint64 bytesRead;
|
||||||
|
static QCompleter *completer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GLOAB_H
|
32
log7.pro
Normal file
32
log7.pro
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
QT += core gui charts
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
CONFIG += c++11
|
||||||
|
|
||||||
|
# You can make your code fail to compile if it uses deprecated APIs.
|
||||||
|
# In order to do so, uncomment the following line.
|
||||||
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
gloab.cpp \
|
||||||
|
main.cpp \
|
||||||
|
mainwindow.cpp \
|
||||||
|
threadchart.cpp \
|
||||||
|
threadpoltchart.cpp \
|
||||||
|
threadread.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
gloab.h \
|
||||||
|
mainwindow.h \
|
||||||
|
threadchart.h \
|
||||||
|
threadpoltchart.h \
|
||||||
|
threadread.h
|
||||||
|
|
||||||
|
FORMS += \
|
||||||
|
mainwindow.ui
|
||||||
|
|
||||||
|
# Default rules for deployment.
|
||||||
|
qnx: target.path = /tmp/$${TARGET}/bin
|
||||||
|
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||||
|
!isEmpty(target.path): INSTALLS += target
|
275
log7.pro.user
Normal file
275
log7.pro.user
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 12.0.2, 2024-09-12T17:28:53. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{212c491d-8228-40db-8cc9-f183f9b9d8d0}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="qlonglong">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QString" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QString" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||||
|
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||||
|
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||||
|
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="ClangTools">
|
||||||
|
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||||
|
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||||
|
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||||
|
<value type="int" key="ClangTools.ParallelJobs">6</value>
|
||||||
|
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||||
|
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ClangdSettings">
|
||||||
|
<value type="bool" key="blockIndexing">false</value>
|
||||||
|
<value type="bool" key="useGlobalSettings">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="CppEditor.QuickFix">
|
||||||
|
<value type="bool" key="UseGlobalSettings">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="DeviceType">Desktop</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.12.0 (mingw73_64)</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.12.0 (mingw73_64)</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{edc54fcd-f681-4a0a-ba77-11a1a5c94a66}</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<value type="int" key="EnableQmlDebugging">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Work\CQT\Test_01\build-log7-Qt_5_12_0_mingw73_64-Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Work/CQT/Test_01/build-log7-Qt_5_12_0_mingw73_64-Debug</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Work\CQT\Test_01\build-log7-Qt_5_12_0_mingw73_64-Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Work/CQT/Test_01/build-log7-Qt_5_12_0_mingw73_64-Release</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="int" key="QtQuickCompiler">0</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
|
<value type="int" key="EnableQmlDebugging">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Work\CQT\Test_01\build-log7-Qt_5_12_0_mingw73_64-Profile</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Work/CQT/Test_01/build-log7-Qt_5_12_0_mingw73_64-Profile</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="int" key="QtQuickCompiler">0</value>
|
||||||
|
<value type="int" key="SeparateDebugInfo">0</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="QList<int>" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
|
||||||
|
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">log72</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Work/QT/ReadLog/log7/log7.pro</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Work/QT/ReadLog/log7/log7.pro</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Work/CQT/Test_01/build-log7-Qt_5_12_0_mingw73_64-Debug</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="qlonglong">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">22</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">22</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
15
main.cpp
Normal file
15
main.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QTextCodec>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
// qputenv("QT_SCALE_FACTOR", "2.0");
|
||||||
|
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
|
||||||
|
QTextCodec::setCodecForLocale(codec);
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
MainWindow w;
|
||||||
|
w.show();
|
||||||
|
return a.exec();
|
||||||
|
}
|
373
mainwindow.cpp
Normal file
373
mainwindow.cpp
Normal file
@ -0,0 +1,373 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include "./ui_mainwindow.h"
|
||||||
|
|
||||||
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
|
: QMainWindow(parent), ui(new Ui::MainWindow)
|
||||||
|
, thread_read(new threadRead), thread_chart(new ThreadChart),thread_polt(new threadPoltChart){
|
||||||
|
ui->setupUi(this);
|
||||||
|
this->setWindowTitle("日志查询工具");
|
||||||
|
// 创建版本号标签
|
||||||
|
m_versionLabel = new QLabel(tr("v1.1.0"), this);
|
||||||
|
// 将标签添加到状态栏的右端
|
||||||
|
ui->statusbar->addPermanentWidget(m_versionLabel);
|
||||||
|
|
||||||
|
connect(thread_read, &threadRead::clearCombo, this, &MainWindow::clearCombo);
|
||||||
|
connect(thread_read, &threadRead::showStatusbar, this, &MainWindow::showStatusbar);
|
||||||
|
connect(thread_read, &threadRead::setBeginTime, this, &MainWindow::setBeginTime);
|
||||||
|
connect(thread_read, &threadRead::setEndTime, this, &MainWindow::setEndTime);
|
||||||
|
connect(thread_read, &threadRead::addCombo, this, &MainWindow::addCombo);
|
||||||
|
connect(thread_read, &threadRead::setProgressBar, this, &MainWindow::setProgressBar);
|
||||||
|
connect(thread_read, &threadRead::closeProg, this, &MainWindow::closeProg);
|
||||||
|
|
||||||
|
//chart
|
||||||
|
connect(thread_chart, &ThreadChart::newCandS, this, &MainWindow::newCandS);
|
||||||
|
connect(thread_chart, &ThreadChart::appSeries, this, &MainWindow::appSeries);
|
||||||
|
connect(thread_chart, &ThreadChart::setChartView, this, &MainWindow::setChartView);
|
||||||
|
connect(thread_chart, &ThreadChart::setWidget, this, &MainWindow::setWidget);
|
||||||
|
connect(thread_chart, &ThreadChart::setProgressBar, this, &MainWindow::setProgressBar);
|
||||||
|
|
||||||
|
//plot
|
||||||
|
connect(thread_polt, &threadPoltChart::newCandS, this, &MainWindow::newPlotCandS);
|
||||||
|
connect(thread_polt, &threadPoltChart::appSeries, this, &MainWindow::appSeries);
|
||||||
|
connect(thread_polt, &threadPoltChart::setChartView, this, &MainWindow::setPlotChartView);
|
||||||
|
connect(thread_polt, &threadPoltChart::setWidget, this, &MainWindow::setWidget);
|
||||||
|
connect(thread_polt, &threadPoltChart::setProgressBar, this, &MainWindow::setProgressBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow::~MainWindow() {
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_openFileBtn_clicked() {
|
||||||
|
Gloab::fileName = QFileDialog::getOpenFileName();
|
||||||
|
//打开文件
|
||||||
|
Gloab::file.setFileName(Gloab::fileName);
|
||||||
|
if (!Gloab::file.open(QIODevice::ReadOnly)) {
|
||||||
|
// 打开失败时弹窗
|
||||||
|
QString dlgTitle = "错误";
|
||||||
|
QString strInfo = "文件打开失败";
|
||||||
|
QMessageBox::warning(this, dlgTitle, strInfo);
|
||||||
|
//退出
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置进度条
|
||||||
|
layout = new QVBoxLayout(ui->widget);
|
||||||
|
progressBar = new QProgressBar(ui->widget);
|
||||||
|
layout->addWidget(progressBar);
|
||||||
|
ui->widget->show();
|
||||||
|
|
||||||
|
// 获取文件大小
|
||||||
|
Gloab::fileSize = Gloab::file.size();
|
||||||
|
Gloab::bytesRead = 0;
|
||||||
|
|
||||||
|
thread_read->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::clearCombo() {
|
||||||
|
ui->comboBox->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::showStatusbar(const QString &message) {
|
||||||
|
ui->statusbar->showMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setBeginTime(const QDateTime &begin) {
|
||||||
|
ui->beginTime->setDateTime(begin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setEndTime(const QDateTime &begin) {
|
||||||
|
ui->endTime->setDateTime(begin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::addCombo(const QStringList &list) {
|
||||||
|
ui->comboBox->addItems(list);
|
||||||
|
//根据输入匹配下拉框
|
||||||
|
Gloab::completer = new QCompleter(list);
|
||||||
|
ui->comboBox->setCompleter(Gloab::completer);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setProgressBar(int percent) {
|
||||||
|
progressBar->setValue(percent);
|
||||||
|
// qApp->processEvents(); // 更新UI
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::closeProg() {
|
||||||
|
layout->deleteLater();
|
||||||
|
progressBar->deleteLater();
|
||||||
|
ui->widget->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::newCandS() {
|
||||||
|
chart = new QChart;
|
||||||
|
series = new QLineSeries;
|
||||||
|
// series->setPointsVisible();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::appSeries(qreal A, qreal B) {
|
||||||
|
series->append(A, B);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setChartView(int jd, bool isEnum) {
|
||||||
|
// 设置图表标题
|
||||||
|
chart->setTitle(QString("基带 %1").arg(jd+1));
|
||||||
|
chart->addSeries(series);
|
||||||
|
if (isEnum) {
|
||||||
|
chart->createDefaultAxes();
|
||||||
|
// 获取X轴
|
||||||
|
QList<QAbstractAxis *> xAxes = chart->axes(Qt::Horizontal);
|
||||||
|
// 断开所有与该轴关联的系列
|
||||||
|
series->detachAxis(xAxes[0]);
|
||||||
|
// 从图表中移除轴
|
||||||
|
chart->removeAxis(xAxes[0]);
|
||||||
|
} else {
|
||||||
|
// 创建类别Y轴
|
||||||
|
QCategoryAxis *axisY = new QCategoryAxis();
|
||||||
|
for (int var = 1; var < Gloab::rule.size(); ++var) {
|
||||||
|
axisY->append(Gloab::rule[var], var);
|
||||||
|
}
|
||||||
|
//刻度线和刻度的label对齐
|
||||||
|
axisY->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
|
||||||
|
axisY->setRange(0, Gloab::rule.size() + 1);
|
||||||
|
chart->setAxisY(axisY, series);
|
||||||
|
// series->attachAxis(axisY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 创建一个时间轴
|
||||||
|
QDateTimeAxis *axisX = new QDateTimeAxis;
|
||||||
|
axisX->setTickCount(10);
|
||||||
|
axisX->setFormat("HH:mm"); // 设置时间格式
|
||||||
|
chart->addAxis(axisX, Qt::AlignBottom);
|
||||||
|
series->attachAxis(axisX);
|
||||||
|
|
||||||
|
|
||||||
|
// 创建QChartView
|
||||||
|
QChartView *chartView = new QChartView(chart);
|
||||||
|
chartView->setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
// 将chartView添加到容器中
|
||||||
|
Gloab::m_chartViews.append(chartView);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setWidget() {
|
||||||
|
// 设置布局
|
||||||
|
int wide = 850;
|
||||||
|
int hight = 600;
|
||||||
|
if (Gloab::m_chartViews.size() > 1) {
|
||||||
|
wide = 1800;
|
||||||
|
}
|
||||||
|
QGridLayout *gridLayout = new QGridLayout(Gloab::widget);
|
||||||
|
for (int i = 0, j = 0; i < Gloab::m_chartViews.size(); i++) {
|
||||||
|
if (i != 0 && i % 2 == 0) {
|
||||||
|
j++;
|
||||||
|
hight += 350;
|
||||||
|
}
|
||||||
|
gridLayout->addWidget(Gloab::m_chartViews[i], j, i - 2 * j);
|
||||||
|
}
|
||||||
|
Gloab::widget->resize(wide, hight);
|
||||||
|
// Gloab::widget->setMaximumHeight(950);
|
||||||
|
|
||||||
|
Gloab::widget->move(70, 20);
|
||||||
|
Gloab::widget->show();
|
||||||
|
|
||||||
|
layout->deleteLater();
|
||||||
|
progressBar->deleteLater();
|
||||||
|
ui->widget->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::newPlotCandS() {
|
||||||
|
chart = new QChart;
|
||||||
|
series = new QLineSeries;
|
||||||
|
// series->setPointsVisible();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setPlotChartView(int jd, bool isEnum) {
|
||||||
|
// 设置图表标题
|
||||||
|
chart->setTitle(QString("基带 %1").arg(jd+1));
|
||||||
|
chart->addSeries(series);
|
||||||
|
if (isEnum) {
|
||||||
|
chart->createDefaultAxes();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//创建默认XY轴
|
||||||
|
chart->createDefaultAxes();
|
||||||
|
//删除Y轴
|
||||||
|
// 获取Y轴
|
||||||
|
QList<QAbstractAxis *> yAxes = chart->axes(Qt::Vertical);
|
||||||
|
// 断开所有与该轴关联的系列
|
||||||
|
series->detachAxis(yAxes[0]);
|
||||||
|
// 从图表中移除轴
|
||||||
|
chart->removeAxis(yAxes[0]);
|
||||||
|
// 创建类别Y轴
|
||||||
|
QCategoryAxis *axisY = new QCategoryAxis();
|
||||||
|
for (int var = 1; var < Gloab::rule.size(); ++var) {
|
||||||
|
axisY->append(Gloab::rule[var], var);
|
||||||
|
}
|
||||||
|
//刻度线和刻度的label对齐
|
||||||
|
axisY->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
|
||||||
|
axisY->setRange(0, Gloab::rule.size() + 1);
|
||||||
|
chart->setAxisY(axisY, series);
|
||||||
|
// plotSeries->attachAxis(axisY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 创建QChartView
|
||||||
|
QChartView *chartView = new QChartView(chart);
|
||||||
|
chartView->setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
// 将chartView添加到容器中
|
||||||
|
Gloab::m_chartViews.append(chartView);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_lineChart_clicked() {
|
||||||
|
if (Gloab::fileName.isEmpty()) {
|
||||||
|
QMessageBox::warning(this, "警告", "请先打开一个日志");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//关闭打开的窗口
|
||||||
|
if (Gloab::widget) {
|
||||||
|
Gloab::widget->close();
|
||||||
|
delete Gloab::widget;
|
||||||
|
Gloab::widget = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取基带id
|
||||||
|
QVector<int> jd;
|
||||||
|
if (ui->jd1->isChecked()) {
|
||||||
|
jd.append(0);
|
||||||
|
}
|
||||||
|
if (ui->jd2->isChecked()) {
|
||||||
|
jd.append(1);
|
||||||
|
}
|
||||||
|
if (ui->jd3->isChecked()) {
|
||||||
|
jd.append(2);
|
||||||
|
}
|
||||||
|
if (ui->jd4->isChecked()) {
|
||||||
|
jd.append(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jd.isEmpty()) {
|
||||||
|
QMessageBox::warning(this, "警告", "请至少选择一个基带");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取时间
|
||||||
|
QDateTime beginTime = ui->beginTime->dateTime();
|
||||||
|
QDateTime endTime = ui->endTime->dateTime();
|
||||||
|
if (beginTime>endTime) {
|
||||||
|
QMessageBox::warning(this, "警告", "请选择正确的时间段");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//获取参数名
|
||||||
|
QString dataName = ui->comboBox->currentText();
|
||||||
|
if (!Gloab::namelist.keys().contains(dataName)) {
|
||||||
|
QMessageBox::warning(this, "警告", "未找到该数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//传入数据绘图
|
||||||
|
thread_chart->setValue(jd, dataName, beginTime, endTime);
|
||||||
|
Gloab::widget = new QWidget();
|
||||||
|
Gloab::widget->setWindowTitle(dataName);
|
||||||
|
|
||||||
|
//设置进度条
|
||||||
|
layout = new QVBoxLayout(ui->widget);
|
||||||
|
progressBar = new QProgressBar(ui->widget);
|
||||||
|
layout->addWidget(progressBar);
|
||||||
|
ui->widget->show();
|
||||||
|
|
||||||
|
// 获取文件大小
|
||||||
|
Gloab::fileSize=0;
|
||||||
|
for (int i = 0; i < jd.size(); ++i) {
|
||||||
|
Gloab::fileSize+=Gloab::g_param[jd[i]].size();
|
||||||
|
}
|
||||||
|
Gloab::bytesRead = 0;
|
||||||
|
|
||||||
|
thread_chart->start();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MainWindow::isNumeric(const QString &str) {
|
||||||
|
// 正则表达式匹配数字和可选的正负号
|
||||||
|
QRegularExpression pattern("^[+-]?([1-9][0-9]*|0)[.]?[0-9]*$");
|
||||||
|
QRegularExpressionMatch patternMatch = pattern.match(str);
|
||||||
|
// 使用std::regex_match来检查字符串是否完全匹配模式
|
||||||
|
return patternMatch.hasMatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_plotChart_clicked()
|
||||||
|
{
|
||||||
|
if (Gloab::fileName.isEmpty()) {
|
||||||
|
QMessageBox::warning(this, "警告", "请先打开一个日志");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//关闭打开的窗口
|
||||||
|
if (Gloab::widget) {
|
||||||
|
Gloab::widget->close();
|
||||||
|
delete Gloab::widget;
|
||||||
|
Gloab::widget = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取基带id
|
||||||
|
QVector<int> jd;
|
||||||
|
if (ui->jd1->isChecked()) {
|
||||||
|
jd.append(0);
|
||||||
|
}
|
||||||
|
if (ui->jd2->isChecked()) {
|
||||||
|
jd.append(1);
|
||||||
|
}
|
||||||
|
if (ui->jd3->isChecked()) {
|
||||||
|
jd.append(2);
|
||||||
|
}
|
||||||
|
if (ui->jd4->isChecked()) {
|
||||||
|
jd.append(3);
|
||||||
|
}
|
||||||
|
if (jd.isEmpty()) {
|
||||||
|
QMessageBox::warning(this, "警告", "请至少选择一个基带");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取时间
|
||||||
|
QDateTime beginTime = ui->beginTime->dateTime();
|
||||||
|
QDateTime endTime = ui->endTime->dateTime();
|
||||||
|
if (beginTime>endTime) {
|
||||||
|
QMessageBox::warning(this, "警告", "请选择正确的时间段");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取参数名
|
||||||
|
QString dataName = ui->comboBox->currentText();
|
||||||
|
if (!Gloab::namelist.keys().contains(dataName)) {
|
||||||
|
QMessageBox::warning(this, "警告", "未找到该数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//传入数据绘图
|
||||||
|
thread_polt->setValue(jd, dataName, beginTime, endTime);
|
||||||
|
Gloab::widget = new QWidget();
|
||||||
|
Gloab::widget->setWindowTitle(dataName);
|
||||||
|
|
||||||
|
//设置进度条
|
||||||
|
layout = new QVBoxLayout(ui->widget);
|
||||||
|
progressBar = new QProgressBar(ui->widget);
|
||||||
|
layout->addWidget(progressBar);
|
||||||
|
ui->widget->show();
|
||||||
|
|
||||||
|
// 获取文件大小
|
||||||
|
Gloab::fileSize=0;
|
||||||
|
for (int i = 0; i < jd.size(); ++i) {
|
||||||
|
Gloab::fileSize+=Gloab::g_param[jd[i]].size();
|
||||||
|
}
|
||||||
|
Gloab::bytesRead = 0;
|
||||||
|
|
||||||
|
thread_polt->start();
|
||||||
|
}
|
||||||
|
|
68
mainwindow.h
Normal file
68
mainwindow.h
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#ifndef MAINWINDOW_H
|
||||||
|
#define MAINWINDOW_H
|
||||||
|
#include "gloab.h"
|
||||||
|
#include "threadread.h"
|
||||||
|
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include <QString>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QProgressBar>
|
||||||
|
|
||||||
|
#include "threadchart.h"
|
||||||
|
#include "threadpoltchart.h"
|
||||||
|
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
namespace Ui {
|
||||||
|
class MainWindow;
|
||||||
|
}
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
class MainWindow : public QMainWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MainWindow(QWidget *parent = nullptr);
|
||||||
|
~MainWindow();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_openFileBtn_clicked();
|
||||||
|
|
||||||
|
void clearCombo();
|
||||||
|
void showStatusbar(const QString &message);
|
||||||
|
void setBeginTime(const QDateTime &begin);
|
||||||
|
void setEndTime(const QDateTime &begin);
|
||||||
|
void addCombo(const QStringList &list);
|
||||||
|
void setProgressBar(int percent);
|
||||||
|
void closeProg();
|
||||||
|
|
||||||
|
void newCandS();
|
||||||
|
void appSeries(qreal A,qreal B);
|
||||||
|
void setChartView(int jd,bool isEnum);
|
||||||
|
void setWidget();
|
||||||
|
|
||||||
|
void newPlotCandS();
|
||||||
|
void setPlotChartView(int jd,bool isEnum);
|
||||||
|
|
||||||
|
void on_lineChart_clicked();
|
||||||
|
|
||||||
|
bool isNumeric(const QString &str);
|
||||||
|
|
||||||
|
void on_plotChart_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::MainWindow *ui;
|
||||||
|
QLabel *m_versionLabel;
|
||||||
|
threadRead *thread_read;
|
||||||
|
ThreadChart *thread_chart;
|
||||||
|
threadPoltChart *thread_polt;
|
||||||
|
|
||||||
|
QProgressBar *progressBar;
|
||||||
|
QVBoxLayout *layout;
|
||||||
|
QChart *chart;
|
||||||
|
QLineSeries *series;
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif // MAINWINDOW_H
|
294
mainwindow.ui
Normal file
294
mainwindow.ui
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MainWindow</class>
|
||||||
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>MainWindow</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralwidget">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
|
<item row="9" column="0">
|
||||||
|
<widget class="QPushButton" name="lineChart">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>时间图</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QGroupBox" name="groupBox_3">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>开始时间</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QDateTimeEdit" name="beginTime">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>yyyy/MM/dd HH:mm:ss</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="0">
|
||||||
|
<spacer name="verticalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" rowspan="4">
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>选择基带</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="jd1">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>基带1</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QCheckBox" name="jd4">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>基带4</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QCheckBox" name="jd3">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>基带3</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="jd2">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>基带2</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QGroupBox" name="groupBox_4">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>数据</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QComboBox" name="comboBox">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
|
<spacer name="verticalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>结束时间</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_4">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QDateTimeEdit" name="endTime">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>yyyy/MM/dd HH:mm:ss</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<spacer name="verticalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="1">
|
||||||
|
<widget class="QWidget" name="widget" native="true"/>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1">
|
||||||
|
<widget class="QPushButton" name="plotChart">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>数据变化图</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<spacer name="verticalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QPushButton" name="openFileBtn">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>打开文件</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<spacer name="verticalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenuBar" name="menubar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>800</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
82
threadchart.cpp
Normal file
82
threadchart.cpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#include "threadchart.h"
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
ThreadChart::ThreadChart(QObject *parent)
|
||||||
|
: QThread{parent} {
|
||||||
|
}
|
||||||
|
|
||||||
|
void ThreadChart::setValue(QVector<int> jd, QString dataName, QDateTime beginTime, QDateTime endTime) {
|
||||||
|
this->jd = jd;
|
||||||
|
this->dataName = dataName;
|
||||||
|
this->beginTime = beginTime;
|
||||||
|
this->endTime = endTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ThreadChart::run() {
|
||||||
|
Gloab::m_chartViews.clear();
|
||||||
|
Gloab::rule.clear();
|
||||||
|
Gloab::rule.append("状态");
|
||||||
|
//判断右侧数据是否为数字型
|
||||||
|
bool isEnum = Gloab::namelist[dataName];
|
||||||
|
for (int i = 0; i < jd.size(); ++i) {
|
||||||
|
emit newCandS();
|
||||||
|
qreal y = 114.514;
|
||||||
|
QString tem1 = "无数据";
|
||||||
|
// 为每个图表添加数据
|
||||||
|
if (isEnum) {
|
||||||
|
for (int j = 0; j < Gloab::g_param[jd[i]].size(); j++) {
|
||||||
|
//更新进度条
|
||||||
|
Gloab::bytesRead++;
|
||||||
|
int percent = Gloab::bytesRead * 100 / Gloab::fileSize;
|
||||||
|
emit setProgressBar(percent);
|
||||||
|
|
||||||
|
QDateTime temTime = QDateTime::fromString(Gloab::g_param[jd[i]][j]["时间"], "yyyy-MM-dd hh:mm:ss:zzz");
|
||||||
|
if (temTime >= beginTime && temTime < endTime) {
|
||||||
|
if (!Gloab::g_param[jd[i]][j].contains(dataName)) {
|
||||||
|
if (y != 114.514) {
|
||||||
|
emit appSeries(temTime.toMSecsSinceEpoch(), y);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (Gloab::g_param[jd[i]][j][dataName].contains(".")) {
|
||||||
|
y = Gloab::g_param[jd[i]][j][dataName].toDouble();
|
||||||
|
emit appSeries(temTime.toMSecsSinceEpoch(), y);
|
||||||
|
} else {
|
||||||
|
y = Gloab::g_param[jd[i]][j][dataName].toLongLong();
|
||||||
|
emit appSeries(temTime.toMSecsSinceEpoch(), y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int j = 0; j < Gloab::g_param[jd[i]].size(); j++) {
|
||||||
|
//更新进度条
|
||||||
|
Gloab::bytesRead++;
|
||||||
|
int percent = Gloab::bytesRead * 100 / Gloab::fileSize;
|
||||||
|
emit setProgressBar(percent);
|
||||||
|
|
||||||
|
QDateTime temTime = QDateTime::fromString(Gloab::g_param[jd[i]][j]["时间"], "yyyy-MM-dd hh:mm:ss:zzz");
|
||||||
|
if (temTime >= beginTime && temTime < endTime) {
|
||||||
|
if (!Gloab::g_param[jd[i]][j].contains(dataName)) {
|
||||||
|
if (tem1 != "无数据") {
|
||||||
|
if (!Gloab::rule.contains(tem1)) {
|
||||||
|
Gloab::rule.append(tem1);
|
||||||
|
}
|
||||||
|
emit appSeries(temTime.toMSecsSinceEpoch(), Gloab::rule.indexOf(tem1));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tem1 = Gloab::g_param[jd[i]][j][dataName];
|
||||||
|
if (!Gloab::rule.contains(tem1)) {
|
||||||
|
Gloab::rule.append(tem1);
|
||||||
|
}
|
||||||
|
emit appSeries(temTime.toMSecsSinceEpoch(), Gloab::rule.indexOf(tem1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
emit setChartView(jd[i], isEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
emit setWidget();
|
||||||
|
quit();
|
||||||
|
}
|
44
threadchart.h
Normal file
44
threadchart.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#ifndef THREADCHART_H
|
||||||
|
#define THREADCHART_H
|
||||||
|
|
||||||
|
#include <QThread>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QChart>
|
||||||
|
using namespace QtCharts;
|
||||||
|
#include <QLineSeries>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
#include <QCategoryAxis>
|
||||||
|
#include <QDateTimeAxis>
|
||||||
|
#include <QGridLayout>
|
||||||
|
|
||||||
|
|
||||||
|
#include "gloab.h"
|
||||||
|
|
||||||
|
class ThreadChart : public QThread {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ThreadChart(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
void setValue(QVector<int> jd, QString dataName, QDateTime beginTime, QDateTime endTime);
|
||||||
|
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void newCandS();
|
||||||
|
void appSeries(qreal A,qreal B);
|
||||||
|
void setChartView(int jd,bool isEnum);
|
||||||
|
void setWidget();
|
||||||
|
void setProgressBar(int percent);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void run() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QVector<int> jd;
|
||||||
|
QDateTime beginTime;
|
||||||
|
QDateTime endTime;
|
||||||
|
QString dataName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // THREADCHART_H
|
87
threadpoltchart.cpp
Normal file
87
threadpoltchart.cpp
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#include "threadpoltchart.h"
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
threadPoltChart::threadPoltChart(QObject *parent)
|
||||||
|
: QThread{parent} {
|
||||||
|
}
|
||||||
|
|
||||||
|
void threadPoltChart::setValue(QVector<int> jd, QString dataName, QDateTime beginTime, QDateTime endTime) {
|
||||||
|
this->jd = jd;
|
||||||
|
this->dataName = dataName;
|
||||||
|
this->beginTime = beginTime;
|
||||||
|
this->endTime = endTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void threadPoltChart::run() {
|
||||||
|
Gloab::m_chartViews.clear();
|
||||||
|
Gloab::rule.clear();
|
||||||
|
Gloab::rule.append("状态");
|
||||||
|
for (int i = 0; i < jd.size(); ++i) {
|
||||||
|
int X = 1;
|
||||||
|
emit newCandS();
|
||||||
|
|
||||||
|
// 为每个图表添加数据
|
||||||
|
//判断右侧数据是否为数字型
|
||||||
|
bool isEnum = Gloab::namelist[dataName];
|
||||||
|
if (dataName.contains("版本号")) {
|
||||||
|
isEnum = false;
|
||||||
|
}
|
||||||
|
if (isEnum) {
|
||||||
|
for (int j = 0; j < Gloab::g_param[jd[i]].size(); j++) {
|
||||||
|
//更新进度条
|
||||||
|
Gloab::bytesRead++;
|
||||||
|
int percent = Gloab::bytesRead * 100 / Gloab::fileSize;
|
||||||
|
emit setProgressBar(percent);
|
||||||
|
|
||||||
|
if (Gloab::g_param[jd[i]][j].keys().size()<=deleteName.size()) {
|
||||||
|
bool f=true;
|
||||||
|
for(auto key : Gloab::g_param[jd[i]][j].keys()) {
|
||||||
|
if (!deleteName.contains(key)) {
|
||||||
|
f=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (f) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QDateTime temTime = QDateTime::fromString(Gloab::g_param[jd[i]][j]["时间"], "yyyy-MM-dd hh:mm:ss:zzz");
|
||||||
|
if (temTime >= beginTime && temTime < endTime) {
|
||||||
|
if (Gloab::g_param[jd[i]][j].contains(dataName)) {
|
||||||
|
if (Gloab::g_param[jd[i]][j][dataName].contains(".")) {
|
||||||
|
emit appSeries(X++, Gloab::g_param[jd[i]][j][dataName].toDouble());
|
||||||
|
} else {
|
||||||
|
emit appSeries(X++, Gloab::g_param[jd[i]][j][dataName].toLongLong());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int j = 0; j < Gloab::g_param[jd[i]].size(); j++) {
|
||||||
|
//更新进度条
|
||||||
|
Gloab::bytesRead++;
|
||||||
|
int percent = Gloab::bytesRead * 100 / Gloab::fileSize;
|
||||||
|
emit setProgressBar(percent);
|
||||||
|
|
||||||
|
QDateTime temTime = QDateTime::fromString(Gloab::g_param[jd[i]][j]["时间"], "yyyy-MM-dd hh:mm:ss:zzz");
|
||||||
|
if (temTime >= beginTime && temTime < endTime) {
|
||||||
|
if (Gloab::g_param[jd[i]][j].contains(dataName)) {
|
||||||
|
QString tem1 = Gloab::g_param[jd[i]][j][dataName];
|
||||||
|
if (!Gloab::rule.contains(tem1)) {
|
||||||
|
Gloab::rule.append(tem1);
|
||||||
|
}
|
||||||
|
emit appSeries(X++, Gloab::rule.indexOf(tem1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
emit setChartView(jd[i], isEnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
emit setWidget();
|
||||||
|
quit();
|
||||||
|
}
|
49
threadpoltchart.h
Normal file
49
threadpoltchart.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#ifndef THREADPOLTCHART_H
|
||||||
|
#define THREADPOLTCHART_H
|
||||||
|
|
||||||
|
#include <QThread>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QChart>
|
||||||
|
using namespace QtCharts;
|
||||||
|
#include <QLineSeries>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
#include <QCategoryAxis>
|
||||||
|
#include <QDateTimeAxis>
|
||||||
|
#include <QGridLayout>
|
||||||
|
|
||||||
|
|
||||||
|
#include "gloab.h"
|
||||||
|
|
||||||
|
class threadPoltChart : public QThread {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit threadPoltChart(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
void setValue(QVector<int> jd, QString dataName, QDateTime beginTime, QDateTime endTime );
|
||||||
|
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void newCandS();
|
||||||
|
|
||||||
|
void appSeries(qreal A, qreal B);
|
||||||
|
|
||||||
|
void setChartView(int jd, bool isEnum);
|
||||||
|
|
||||||
|
void setWidget();
|
||||||
|
|
||||||
|
void setProgressBar(int percent);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void run() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QVector<int> jd;
|
||||||
|
QDateTime beginTime;
|
||||||
|
QDateTime endTime;
|
||||||
|
QString dataName;
|
||||||
|
QStringList deleteName;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // THREADPOLTCHART_H
|
121
threadread.cpp
Normal file
121
threadread.cpp
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
#include "threadread.h"
|
||||||
|
|
||||||
|
threadRead::threadRead(QObject *parent)
|
||||||
|
: QThread{parent} {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool threadRead::isNumeric(QString data) {
|
||||||
|
// 正则表达式匹配数字和可选的正负号
|
||||||
|
QRegularExpression pattern("^[+-]?([1-9][0-9]*|0)[.]?[0-9]*$");
|
||||||
|
QRegularExpressionMatch patternMatch =pattern.match(data);
|
||||||
|
// 使用std::regex_match来检查字符串是否完全匹配模式
|
||||||
|
return patternMatch.hasMatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
void threadRead::run() {
|
||||||
|
//正则表达式
|
||||||
|
//时间
|
||||||
|
QRegularExpression dateTimeRegex("([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{3})");
|
||||||
|
QRegularExpressionMatch matchDateTime;
|
||||||
|
//基带
|
||||||
|
QRegularExpression jdRegex("\\[.*(\\d)\\]");
|
||||||
|
QRegularExpressionMatch matchLogLevel;
|
||||||
|
|
||||||
|
|
||||||
|
//初始化数据
|
||||||
|
for (auto &i: Gloab::g_param) {
|
||||||
|
i.clear();
|
||||||
|
}
|
||||||
|
//清除下拉框数据
|
||||||
|
emit clearCombo();
|
||||||
|
if(!Gloab::namelist.empty()){
|
||||||
|
Gloab::namelist.clear();
|
||||||
|
Gloab::completer->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置状态栏
|
||||||
|
emit showStatusbar("正在打开文件");
|
||||||
|
|
||||||
|
//读取文件
|
||||||
|
QTextStream in(&Gloab::file);
|
||||||
|
while (!in.atEnd()) {
|
||||||
|
//读取一行
|
||||||
|
QString line = in.readLine();
|
||||||
|
|
||||||
|
//更新进度条
|
||||||
|
Gloab::bytesRead += line.size();
|
||||||
|
int percent = Gloab::bytesRead * 150 / Gloab::fileSize;
|
||||||
|
emit setProgressBar(percent);
|
||||||
|
|
||||||
|
|
||||||
|
/* 匹配数据 */
|
||||||
|
//匹配日期时间
|
||||||
|
QMap<QString, QString> temMap;
|
||||||
|
int JD;
|
||||||
|
QString temtime;
|
||||||
|
QString temjd;
|
||||||
|
matchDateTime = dateTimeRegex.match(line);
|
||||||
|
if (matchDateTime.hasMatch()) {
|
||||||
|
temtime = matchDateTime.captured(1);
|
||||||
|
temMap["时间"] = temtime;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//匹配基带
|
||||||
|
matchLogLevel = jdRegex.match(line);
|
||||||
|
if (matchLogLevel.hasMatch()) {
|
||||||
|
temjd = matchLogLevel.captured(1);
|
||||||
|
temMap["基带"] = temjd;
|
||||||
|
JD = temjd.toInt() - 1;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置开始时间
|
||||||
|
if (Gloab::temData.isEmpty()) {
|
||||||
|
emit setBeginTime(QDateTime::fromString(temtime, "yyyy-MM-dd hh:mm:ss:zzz"));
|
||||||
|
}
|
||||||
|
Gloab::temData.clear();
|
||||||
|
Gloab::temData["时间"] = temtime;
|
||||||
|
//将左右拆分
|
||||||
|
QStringList dataParts = line.split(']');
|
||||||
|
//判断右侧是否有数据
|
||||||
|
if (dataParts[1].isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//将右侧数据拆分
|
||||||
|
QStringList data = dataParts[1].split(',');
|
||||||
|
for (int i = 0; i < data.size(); i++) {
|
||||||
|
//将每一条数据拆为数据名和值
|
||||||
|
QStringList tem = data[i].split('=');
|
||||||
|
if (tem.size() < 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!Gloab::namelist.contains(tem[0])) {
|
||||||
|
Gloab::namelist[tem[0]]=isNumeric(tem[1]);
|
||||||
|
if (tem[0].contains("版本号")) {
|
||||||
|
Gloab::namelist[tem[0]] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Gloab::temData[tem[0]] = tem[1];
|
||||||
|
}
|
||||||
|
//记录数据
|
||||||
|
Gloab::g_param[JD].append(Gloab::temData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置结束时间
|
||||||
|
emit setEndTime(QDateTime::fromString(Gloab::temData["时间"], "yyyy-MM-dd hh:mm:ss:zzz"));
|
||||||
|
|
||||||
|
//设置状态栏
|
||||||
|
emit showStatusbar("打开成功:" + Gloab::fileName);
|
||||||
|
|
||||||
|
//添加下拉框数据
|
||||||
|
emit addCombo(Gloab::namelist.keys());
|
||||||
|
|
||||||
|
//关闭
|
||||||
|
emit closeProg();
|
||||||
|
Gloab::file.close();
|
||||||
|
Gloab::temData.clear();
|
||||||
|
quit();
|
||||||
|
}
|
31
threadread.h
Normal file
31
threadread.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#ifndef THREADREAD_H
|
||||||
|
#define THREADREAD_H
|
||||||
|
|
||||||
|
#include "gloab.h"
|
||||||
|
|
||||||
|
#include <QtCharts>
|
||||||
|
|
||||||
|
class threadRead : public QThread {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit threadRead(QObject *parent = nullptr);
|
||||||
|
bool isNumeric(QString data);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void clearCombo();
|
||||||
|
void showStatusbar(QString message);
|
||||||
|
void setBeginTime(QDateTime begin);
|
||||||
|
void setEndTime(QDateTime begin);
|
||||||
|
void addCombo(QStringList list);
|
||||||
|
void setProgressBar(int percent);
|
||||||
|
void closeProg();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void run() Q_DECL_OVERRIDE;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // THREADREAD_H
|
Reference in New Issue
Block a user