李君晟->main #8

Closed
pzgeofhmj wants to merge 18 commits from 李君晟 into Main

@ -1,83 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(Greenhouse VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets PrintSupport SerialPort)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets PrintSupport SerialPort)
#add_executable(${PROJECT_NAME}
# "main.cpp"
# "ico.rc"
#)
set(PROJECT_SOURCES
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
resources.qrc
iconfont.h
iconfont.cpp
datapanel.cpp
datapanel.h
datapanel.ui
controlpanel.h
controlpanel.cpp
controlpanel.ui
qcustomplot.cpp
qcustomplot.h
cfgcom.cpp
cfgcom.h
cfgcom.ui
tool.cpp
tool.h
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(Greenhouse
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
# Define target properties for Android with Qt 6 as:
# set_property(TARGET Greenhouse APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
if(ANDROID)
add_library(Greenhouse SHARED
${PROJECT_SOURCES}
)
# Define properties for Android with Qt 5 after find_package() calls as:
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
else()
add_executable(Greenhouse
${PROJECT_SOURCES}
"main.cpp"
)
endif()
endif()
target_link_libraries(Greenhouse PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::PrintSupport Qt${QT_VERSION_MAJOR}::SerialPort)
target_include_directories(Greenhouse PUBLIC ${CMAKE_CURRENT_LIST_DIR})
set_target_properties(Greenhouse PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
install(TARGETS Greenhouse
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(Greenhouse)
endif()

@ -1,364 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.12.2, 2024-07-11T17:16:58. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{52d64478-9968-4ad7-aa83-49be27a2b35c}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">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="int" 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="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="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="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">4</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>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.9 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.9 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5129.win32_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\ccf\build-greenhouse-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</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="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</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.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\ccf\build-greenhouse-Desktop_Qt_5_12_9_MinGW_32_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</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="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</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.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\ccf\build-greenhouse-Desktop_Qt_5_12_9_MinGW_32_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</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="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</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.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release with Debug Information</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\ccf\build-greenhouse-Desktop_Qt_5_12_9_MinGW_32_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</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="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</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.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Minimum Size Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</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="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Greenhouse</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.Greenhouse</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">Greenhouse</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/ccf/build-greenhouse-Desktop_Qt_5_12_9_MinGW_32_bit-Release</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">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>

@ -1,130 +0,0 @@
#include "cfgcom.h"
#include "ui_cfgcom.h"
#include "iconfont.h"
#include <QMessageBox>
#include <qdatetime.h>
CfgCom::CfgCom(QWidget *parent) :
QDialog(parent),
ui(new Ui::CfgCom),
enableCache(false)
{
ui->setupUi(this);
uiInit();
searchPort();
serialPortInit();
}
CfgCom::~CfgCom()
{
delete ui;
}
void CfgCom::uiInit()
{
ui->btn_refresh->setFont(IconFont::IconFontInstance()->iconFont);
ui->btn_refresh->setText(QChar(0xe610));
ui->btn_refresh->setStyleSheet("color:black;font-size:26px;");
ui->cb_baud->setCurrentIndex(3);
setState("无操作","#909399");
}
void CfgCom::searchPort()
{
// 查找可用的串口设备
QList<QSerialPortInfo> serialPortInfos = QSerialPortInfo::availablePorts();
ui->cb_com->clear();
// 将可用串口设备添加到 QComboBox 中
foreach (const QSerialPortInfo &serialPortInfo, serialPortInfos) {
ui->cb_com->addItem(serialPortInfo.portName());
}
}
void CfgCom::serialPortInit()
{
serialPort = new QSerialPort(this);
tempTimer = new QTimer();
connect(serialPort,&QSerialPort::readyRead,[&](){
tempArrayData.append(serialPort->readAll());
tempTimer->start(ui->lineEdit_cache_time->text().toInt());
});
// 缓存完整数据
connect(tempTimer,&QTimer::timeout,this,&CfgCom::cacheDate);
}
void CfgCom::setState(QString state,QString color)
{
QString text = "<span style='color: #4b5450;'>采集状态:</span>"
"<span style='color:%1;font-weight:600;white-space: pre;'>%2</span>";
ui->lbl_msg->setText(text.arg(color).arg(state));
}
void CfgCom::writeData(QString data)
{
serialPort->write(data.toUtf8());
}
void CfgCom::cacheDate()
{
enableCache = true;
tempTimer->stop();//关闭定时器
emit sendData(tempArrayData);
ui->plainTextEdit->appendPlainText(timeStamp() + " -> " + tempArrayData);
tempArrayData.clear();//清除缓冲区
}
void CfgCom::on_btn_refresh_clicked()
{
searchPort();
}
void CfgCom::on_cb_com_currentTextChanged(const QString &arg1)
{
portName = arg1;
}
void CfgCom::on_btn_start_clicked()
{
serialPort->setPortName(portName);
serialPort->setBaudRate(baud);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setFlowControl(QSerialPort::NoFlowControl);
if (!serialPort->open(QIODevice::ReadWrite)) {
QMessageBox::warning(this,QString("提示"),QString("串口%1%2").arg(portName).arg(serialPort->errorString()));
return;
}
setState("数据采集中...","#67c23a");
}
void CfgCom::on_cb_baud_currentTextChanged(const QString &arg1)
{
baud = arg1.toInt();
}
void CfgCom::on_btn_stop_clicked()
{
serialPort->close();
setState("停止采集","#f56c6c");
}
//时间戳
QString CfgCom::timeStamp()
{
//将时间对面按照一定的格式转换为字符串对象
QDateTime dateTime= QDateTime::currentDateTime();//获取系统当前的时间
QString time_stamp = dateTime .toString("hh:mm:ss");//格式化时间
return "[" + time_stamp + "] : ";
}

@ -1,65 +0,0 @@
#ifndef CFGCOM_H
#define CFGCOM_H
#include <QDialog>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QTimer>
namespace Ui {
class CfgCom;
}
class CfgCom : public QDialog
{
Q_OBJECT
public:
explicit CfgCom(QWidget *parent = nullptr);
~CfgCom();
public:
void uiInit();
void searchPort();
void serialPortInit();
void setState(QString state,QString color);
QString timeStamp();
Q_SIGNALS:
void sendData(QByteArray data);
public Q_SLOTS:
void writeData(QString data);
void cacheDate();
private slots:
void on_btn_refresh_clicked();
void on_cb_com_currentTextChanged(const QString &arg1);
void on_btn_start_clicked();
void on_cb_baud_currentTextChanged(const QString &arg1);
void on_btn_stop_clicked();
private:
Ui::CfgCom *ui;
QSerialPort * serialPort;
//数据缓存定时器
QTimer *tempTimer;
bool enableCache;
QByteArray tempArrayData;
QString portName;
qint64 baud;
};
#endif // CFGCOM_H

@ -1,369 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CfgCom</class>
<widget class="QDialog" name="CfgCom">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>900</width>
<height>450</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>900</width>
<height>450</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>900</width>
<height>450</height>
</size>
</property>
<property name="windowTitle">
<string>串口设置</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="title">
<string>串口配置</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="minimumSize">
<size>
<width>85</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>串口选择:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cb_com">
<property name="minimumSize">
<size>
<width>120</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>120</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_refresh">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>60</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>波特率:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="cb_baud">
<property name="minimumSize">
<size>
<width>120</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>120</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<item>
<property name="text">
<string>1200</string>
</property>
</item>
<item>
<property name="text">
<string>2400</string>
</property>
</item>
<item>
<property name="text">
<string>4800</string>
</property>
</item>
<item>
<property name="text">
<string>9600</string>
</property>
</item>
<item>
<property name="text">
<string>14400</string>
</property>
</item>
<item>
<property name="text">
<string>19200</string>
</property>
</item>
<item>
<property name="text">
<string>38400</string>
</property>
</item>
<item>
<property name="text">
<string>57600</string>
</property>
</item>
<item>
<property name="text">
<string>115200</string>
</property>
</item>
<item>
<property name="text">
<string>128000</string>
</property>
</item>
<item>
<property name="text">
<string>230400</string>
</property>
</item>
<item>
<property name="text">
<string>256000</string>
</property>
</item>
<item>
<property name="text">
<string>460800</string>
</property>
</item>
<item>
<property name="text">
<string>500000</string>
</property>
</item>
<item>
<property name="text">
<string>921600</string>
</property>
</item>
<item>
<property name="text">
<string>1000000</string>
</property>
</item>
<item>
<property name="text">
<string>2000000</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_3">
<property name="minimumSize">
<size>
<width>117</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>117</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>缓存时间(ms):</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_cache_time">
<property name="minimumSize">
<size>
<width>90</width>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>50</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QPushButton" name="btn_start">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>采集数据</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_stop">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>停止采集</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="lbl_msg">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>采集状态:</string>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="plainTextEdit"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -1,165 +0,0 @@
#include "controlpanel.h"
#include "ui_controlpanel.h"
#include <QDebug>
#include <QGraphicsDropShadowEffect>
#include <QMouseEvent>
#include <QString>
#include <qmovie.h>
#include "iconfont.h"
ControlPanel::ControlPanel(QWidget *parent) :
QFrame(parent),
ui(new Ui::ControlPanel),
m_ctrl_state(false),
m_ctrl_disable(false),
cmd("{\"%1\":\"%2\"}")
{
ui->setupUi(this);
ui->lbl_ctrl->installEventFilter(this);
setPlugsToView(parent);
qDebug() << "this->parent()->objectName()" << this->parent()->objectName();
}
ControlPanel::~ControlPanel()
{
delete ui;
}
bool ControlPanel::eventFilter(QObject *watched, QEvent *event)
{
// 校验是否禁用点击
if(m_ctrl_disable)
return false;
if(watched == ui->lbl_ctrl && event->type() == QEvent::MouseButtonPress){
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if (mouseEvent->button() == Qt::LeftButton)
{
m_ctrl_state = !m_ctrl_state;
if(m_ctrl_state){
On();
}else{
Off();
}
return true; // 事件已经被处理,不需要传递给目标对象
}
}
// 对于其他事件,使用默认处理方式
return QObject::eventFilter(watched, event);
}
void ControlPanel::setPlugsToView(QWidget *view)
{
QVBoxLayout *layout = new QVBoxLayout(view);
layout->setContentsMargins(2,2,2,2);
layout->addWidget(this);
view->setLayout(layout);
}
void ControlPanel::setGif(QString gif_path)
{
m_gif_movie = new QMovie(gif_path);
ui->lbl_gif->setMovie(m_gif_movie);
ui->lbl_gif->setScaledContents(true);
}
void ControlPanel::Off()
{
m_gif_movie->stop();
setCtrl(QChar(0xe642),"000000");
setStyle("#ffffff","#c0c0c0");
sendData(cmd.arg(this->parent()->objectName()).arg("Off"));
ui->lbl_state->setText("\n\n");
ui->lbl_state->setStyleSheet("color:#000000");
}
void ControlPanel::On()
{
qDebug() << "On";
m_gif_movie->start();
setCtrl(QChar(0xe643),"#67c23a");
setStyle("#ffffff","#67c23a");
sendData(cmd.arg(this->parent()->objectName()).arg("On"));
ui->lbl_state->setText("\n\n");
ui->lbl_state->setStyleSheet("color:#67c23a");
}
void ControlPanel::setState(QString state,QString color)
{
ui->lbl_state->setText(state.split("", QString::SkipEmptyParts).join("\n"));
QString style = "color:%1";
ui->lbl_state->setStyleSheet(style.arg(color));
}
void ControlPanel::setTitel(QString titel, QString color)
{
ui->lbl_titel->setText(titel);
QString style = "color:%1";
ui->lbl_titel->setStyleSheet(style.arg(color));
}
void ControlPanel::setCtrl(QChar icon, QString color)
{
ui->lbl_ctrl->setFont(IconFont::IconFontInstance()->iconFont);
ui->lbl_ctrl->setText(icon);
QString style = "color:%1;font-size:36px;";
ui->lbl_ctrl->setStyleSheet(style.arg(color));
}
void ControlPanel::disableCtrl(bool is_disable)
{
// 禁用操作
if(is_disable){
m_ctrl_disable = true;
ui->lbl_ctrl->setToolTip("操作禁用");
}
else{
m_ctrl_disable = false;
ui->lbl_ctrl->setToolTip("");
}
}
void ControlPanel::setState(bool state)
{
m_ctrl_state = state;
if(m_ctrl_state){
m_gif_movie->start();
setCtrl(QChar(0xe643),"#67c23a");
setStyle("#ffffff","#67c23a");
ui->lbl_state->setText("\n\n");
ui->lbl_state->setStyleSheet("color:#67c23a");
}else{
m_gif_movie->stop();
setCtrl(QChar(0xe642),"000000");
setStyle("#ffffff","#c0c0c0");
ui->lbl_state->setText("\n\n");
ui->lbl_state->setStyleSheet("color:#000000");
}
}
void ControlPanel::setStyle(QString bac_color,QString shadow_color,qint64 radius)
{
//设置具体阴影
auto shadow_effect = new QGraphicsDropShadowEffect;
shadow_effect->setOffset(0, 0);
//阴影颜色
shadow_effect->setColor(QColor(shadow_color));
//阴影半径
shadow_effect->setBlurRadius(radius);
// 控件设置
this->setGraphicsEffect(shadow_effect);
QString style = "QFrame#%1{border:2px solid %2;border-radius:%3px;background-color: %4;}";
this->setStyleSheet(style.arg(this->objectName()).arg(bac_color).arg(radius).arg(bac_color));
}
void ControlPanel::setBasicTemplate(QString bac_color, QString shadow_color, QString titel, QString state,QString gif,QString color)
{
setStyle(bac_color,shadow_color);
setTitel(titel,color);
setState(state,color);
setGif(gif);
On();
Off();
}

@ -1,57 +0,0 @@
#ifndef CONTROLPANEL_H
#define CONTROLPANEL_H
#include <QFrame>
#include <QMovie>
namespace Ui {
class ControlPanel;
}
class ControlPanel : public QFrame
{
Q_OBJECT
public:
explicit ControlPanel(QWidget *parent = nullptr);
~ControlPanel();
protected:
bool eventFilter(QObject *watched, QEvent *event) override;
public:
void setStyle(QString bac_color,QString shadow_color,qint64 radius = 10);
void setBasicTemplate(QString bac_color, QString shadow_color, QString titel, QString state,QString gif,QString color = "#000000");
void setPlugsToView(QWidget *widget);
void setGif(QString gif_path);
void Off();
void On();
void setState(QString state,QString color = "#000000");
void setTitel(QString titel,QString color = "#000000");
void setCtrl(QChar icon,QString color = "#000000");
void disableCtrl(bool is_disable);
/**
* @brief
* @param state
*/
void setState(bool state);
Q_SIGNALS:
void sendData(QString data);
private:
Ui::ControlPanel *ui;
QMovie * m_gif_movie;
bool m_ctrl_state;
bool m_ctrl_disable;
QString cmd;
};
#endif // CONTROLPANEL_H

@ -1,181 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ControlPanel</class>
<widget class="QFrame" name="ControlPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>246</width>
<height>96</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>12</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="lbl_state">
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>工
中</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="lbl_gif">
<property name="minimumSize">
<size>
<width>90</width>
<height>90</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>90</width>
<height>90</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="lbl_ctrl">
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<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>
<widget class="QLabel" name="lbl_titel">
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -1,115 +0,0 @@
#include "datapanel.h"
#include "ui_datapanel.h"
#include "iconfont.h"
#include <QGraphicsDropShadowEffect>
#include <QDebug>
DataPanel::DataPanel(QWidget *parent) :
QFrame(parent),
ui(new Ui::DataPanel),
m_font_color("#000000")
{
ui->setupUi(this);
setPlugsToView(parent);
}
DataPanel::~DataPanel()
{
delete ui;
}
void DataPanel::setBasicTemplate(QString bac_color, QString shadow_color, QString titel, QChar icon, QString unit,QString color)
{
m_font_color = color;
setStyle(bac_color,shadow_color);
setTitel(titel,m_font_color);
setIcon(icon,m_font_color);
setUnit(unit,m_font_color);
}
void DataPanel::setStyle(QString bac_color,QString shadow_color,qint64 radius)
{
//设置具体阴影
auto shadow_effect = new QGraphicsDropShadowEffect;
shadow_effect->setOffset(0, 0);
//阴影颜色
shadow_effect->setColor(QColor(shadow_color));
//阴影半径
shadow_effect->setBlurRadius(radius);
// 控件设置
this->setGraphicsEffect(shadow_effect);
QString style = "QFrame#%1{border:2px solid %2;border-radius:%3px;background-color: %4;}";
this->setStyleSheet(style.arg(this->objectName()).arg(bac_color).arg(radius).arg(bac_color));
}
void DataPanel::setTitel(QString titel, QString color)
{
ui->lbl_titel->setText(titel);
QString style = "color:%1";
ui->lbl_titel->setStyleSheet(style.arg(color));
}
void DataPanel::setIcon(QChar icon, QString color)
{
ui->lbl_icon->setFont(IconFont::IconFontInstance()->iconFont);
ui->lbl_icon->setText(icon);
QString style = "color:%1;font-size:26px;";
ui->lbl_icon->setStyleSheet(style.arg(color));
}
void DataPanel::setValue(QString value, bool state)
{
ui->lbl_data->setText(value);
QString style = "color:%1";
ui->lbl_data->setStyleSheet(style.arg(m_font_color));
if(state){
setStyle("#fef0f0","#f56c6c");
return;
}
setStyle("#ffffff","#c0c0c0");
}
void DataPanel::setValue(QString value,int threshold,emComparisonCondition em_CCondition)
{
ui->lbl_data->setText(value);
QString style = "color:%1";
ui->lbl_data->setStyleSheet(style.arg(m_font_color));
switch (em_CCondition) {
case LessThan://目标值小于阈值
if(value.toInt() < threshold){
qDebug() << value << "小于" << threshold;
setStyle("#fef0f0","#f56c6c");
}
else{
setStyle("#ffffff","#c0c0c0");
}
case GreaterThan://目标值大于阈值
if(value.toInt() > threshold){
setStyle("#fef0f0","#f56c6c");
qDebug() << value << "大于" << threshold;
}
else{
setStyle("#ffffff","#c0c0c0");
}
case EqualTo://目标值等于阈值
if(value.toInt() == threshold) setStyle("#fef0f0","#f56c6c");
else setStyle("#ffffff","#c0c0c0");
// setStyle("#ffffff","#c0c0c0");
}
}
void DataPanel::setUnit(QString unit, QString color)
{
ui->lbl_uint->setText(unit);
QString style = "color:%1";
ui->lbl_uint->setStyleSheet(style.arg(color));
}
void DataPanel::setPlugsToView(QWidget *view)
{
QVBoxLayout *layout = new QVBoxLayout(view);
layout->setContentsMargins(2,2,2,2);
layout->addWidget(this);
view->setLayout(layout);
}

@ -1,40 +0,0 @@
#ifndef DATAPANEL_H
#define DATAPANEL_H
#include <QFrame>
#include <QSharedPointer>
enum emComparisonCondition{
LessThan, //目标值小于阈值
GreaterThan, //目标值大于阈值
EqualTo //目标值等于阈值
};
namespace Ui {
class DataPanel;
}
class DataPanel : public QFrame
{
Q_OBJECT
public:
explicit DataPanel(QWidget *parent = nullptr);
~DataPanel();
public:
void setBasicTemplate(QString bac_color,QString shadow_color,QString titel,QChar icon,QString unit,QString color = "#000000");
void setStyle(QString bac_color,QString shadow_color,qint64 radius = 10);
void setTitel(QString titel,QString color = "#000000");
void setIcon(QChar icon,QString color = "#000000");
void setValue(QString value,bool state);
void setValue(QString value,int threshold,emComparisonCondition em_CCondition);
void setUnit(QString unit,QString color = "#000000");
void setPlugsToView(QWidget *widget);
private:
Ui::DataPanel *ui;
QString m_font_color;
};
#endif // DATAPANEL_H

@ -1,191 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DataPanel</class>
<widget class="QFrame" name="DataPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>196</width>
<height>148</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="lbl_titel">
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>湿度</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="lbl_icon">
<property name="minimumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<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>
<widget class="QLabel" name="lbl_data">
<property name="minimumSize">
<size>
<width>0</width>
<height>50</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>50</height>
</size>
</property>
<property name="font">
<font>
<pointsize>36</pointsize>
</font>
</property>
<property name="text">
<string>0.00</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<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>
<widget class="QLabel" name="lbl_uint">
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="font">
<font>
<pointsize>18</pointsize>
</font>
</property>
<property name="text">
<string>%Rh</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

@ -1 +0,0 @@
IDI_ICON_LOGO ICON DISCARDABLE "images/ico.ico"

Binary file not shown.

@ -1,42 +0,0 @@
#include "iconfont.h"
#include <QFontDatabase>
#include <QMutex>
IconFont *IconFont::IconFontInstance()
{
static QMutex mutex;
static QScopedPointer<IconFont> inst;
if (Q_UNLIKELY(!inst)) {
mutex.lock();
if (!inst) {
inst.reset(new IconFont);
}
mutex.unlock();
}
return inst.data();
}
IconFont::IconFont()
{
QFontDatabase fontDb;
if (!fontDb.families().contains("iconfont")) {
int fontId = fontDb.addApplicationFont(":/icon/iconfont.ttf");
QStringList fontName = fontDb.applicationFontFamilies(fontId);
if (fontName.count() == 0) {
// qDebug() << "load iconfont.ttf error";
}
}
if (fontDb.families().contains("iconfont")) {
iconFont = QFont("iconfont");
iconFont.setHintingPreference(QFont::PreferNoHinting);
}
}
IconFont::~IconFont()
{
}

@ -1,22 +0,0 @@
#ifndef ICONFONT_H
#define ICONFONT_H
#include <QObject>
#include <QFont>
class IconFont : public QObject
{
Q_OBJECT
public:
~IconFont();
static IconFont* IconFontInstance();
public:
QFont iconFont;
private:
IconFont();
};
#endif // ICONFONT_H

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

@ -1,18 +0,0 @@
#include "mainwindow.h"
#include <QApplication>
#include <QIcon>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个应用程序图标
QIcon appIcon(":/images/ico.ico");
// 设置应用程序图标
a.setWindowIcon(appIcon);
MainWindow w;
w.show();
return a.exec();
}

@ -1,319 +0,0 @@
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "iconfont.h"
#include <QDateTime>
#include <QGraphicsDropShadowEffect>
#include <QLocale>
#include "tool.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
uiInit();
dataPanelInit();
ctlPanelInit();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showEvent(QShowEvent *event)
{
// QFile qssFile("D:/Desktop/qss/dark.qss"); // 使用资源文件加载QSS文件
// if (qssFile.open(QFile::ReadOnly | QFile::Text))
// {
// QString styleSheet = QLatin1String(qssFile.readAll());
// qssFile.close();
// // 设置加载的样式表为全局样式表
// qApp->setStyleSheet(styleSheet);
// }
}
void MainWindow::timeShow()
{
QLocale locale = QLocale::Chinese;
QDateTime dateTime= QDateTime::currentDateTime();//获取系统当前的时间
// 获取日期
QString date = dateTime.toString("yyyy-MM-dd");//格式化时间
// 获取时间
QString time = dateTime.toString("hh:mm:ss");//格式化时间
// 获取周
QString week =locale.toString(dateTime,QString("ddd"));//格式化时间
ui->lbl_dateShow->setText(date);
ui->lbl_timeShow->setText(time);
ui->lbl_weekShow->setText(week);
}
void MainWindow::uiInit()
{
this->setWindowIcon(QIcon(":/images/ico.ico"));
setShadow("#ffffff","#c0c0c0",ui->lbl_titelBac,true);
tiemPlugsInit();
linePanelInit();
ui->btn_set->setFont(IconFont::IconFontInstance()->iconFont);
ui->btn_set->setText(QChar(0xe600));
ui->btn_set->setStyleSheet("color:black;font-size:26px;");
}
void MainWindow::dataPanelInit()
{
temp = new DataPanel(ui->frame_temp);
temp->setBasicTemplate("#ffffff","#c0c0c0","温度",QChar(0xe88c),"");
humi = new DataPanel(ui->frame_humi);
humi->setBasicTemplate("#ffffff","#c0c0c0","湿度",QChar(0xe834),"%Rh");
light = new DataPanel(ui->frame_light);
light->setBasicTemplate("#ffffff","#c0c0c0","光强",QChar(0xea32),"Lux");
soil = new DataPanel(ui->frame_soil);
soil->setBasicTemplate("#ffffff","#c0c0c0","地面潮湿度",QChar(0xea30),"%Rh");
cfgCom = new CfgCom(this);
connect(cfgCom,&CfgCom::sendData,this,&MainWindow::receiveData);
}
void MainWindow::ctlPanelInit()
{
temp_ctl = new ControlPanel(ui->frame_temp_ctl);
temp_ctl->setBasicTemplate("#ffffff","#c0c0c0","降温","待机中",":/gif/fan.gif");
connect(temp_ctl,&ControlPanel::sendData,cfgCom,&CfgCom::writeData);
humi_ctl = new ControlPanel(ui->frame_humi_ctl);
humi_ctl->setBasicTemplate("#ffffff","#c0c0c0","加湿","待机中",":/gif/wet.gif");
connect(humi_ctl,&ControlPanel::sendData,cfgCom,&CfgCom::writeData);
light_ctl = new ControlPanel(ui->frame_light_ctl);
light_ctl->setBasicTemplate("#ffffff","#c0c0c0","光控","待机中",":/gif/light.gif");
connect(light_ctl,&ControlPanel::sendData,cfgCom,&CfgCom::writeData);
soil_ctl = new ControlPanel(ui->frame_soil_ctl);
soil_ctl->setBasicTemplate("#ffffff","#c0c0c0","水控","待机中",":/gif/water.gif");
connect(soil_ctl,&ControlPanel::sendData,cfgCom,&CfgCom::writeData);
ui->comboBox_auto->setCurrentText("自动");
}
void MainWindow::setShadow(QString background_color,QString color,QWidget *widget,bool bac_none,qint64 radius)
{
//设置具体阴影
auto shadow_effect = new QGraphicsDropShadowEffect;
shadow_effect->setOffset(0, 0);
//阴影颜色
shadow_effect->setColor(QColor(color));
//阴影半径
shadow_effect->setBlurRadius(radius);
// 控件设置
widget->setGraphicsEffect(shadow_effect);
if(bac_none){
return ;
}
QString style = "%1#%2{border:2px solid white;border-radius:%3px;background-color: %4;}";
widget->setStyleSheet(style.arg(widget->metaObject()->className()).arg(widget->objectName()).arg(radius).arg(background_color));
qDebug() << style.arg(widget->metaObject()->className()).arg(widget->objectName()).arg(radius).arg(background_color);
}
void MainWindow::dataManageHandle()
{
// 1. 获取数据控件
// qDebug() << this->gridLayout_dataManage
}
void MainWindow::tiemPlugsInit()
{
timer = QSharedPointer<QTimer>(new QTimer(this));
timer.data()->start(1000);
connect(timer.data(),&QTimer::timeout,this,&MainWindow::timeShow);
ui->lbl_timeIcon->setFont(IconFont::IconFontInstance()->iconFont);
ui->lbl_timeIcon->setText(QChar(0xe648));
ui->lbl_timeIcon->setStyleSheet("font-size:32px");
setShadow("#ffffff","#c0c0c0",ui->frame_time);
}
void MainWindow::linePanelInit()
{
setLine1Panel();
setLine2Panel();
// QTimer *timer = new QTimer();
// connect(timer, &QTimer::timeout,this,[this]{
// static double constant = 60;
// int temp = rand() % 5 + 1;
// int n = rand() % 5; //产生100以内的随机整数
// double fn = n / (temp * 1.0); //产生10以内的随机浮点数精度为小数点后1位
// setPanelData(m_line1,constant + fn,constant + fn + 3);
// setPanelData(m_line2,constant + fn,constant + fn + 3);
// });
// timer->start(100);
// m_line2->xAxis->setTicker(dateTick);
// m_line2->plotLayout()->insertRow(0);
}
void MainWindow::addLine(QCustomPlot *costomPlot, QVector<QPair<QString, QColor> > lines)
{
QSharedPointer<QCPAxisTickerDateTime> dateTick(new QCPAxisTickerDateTime);
dateTick->setDateTimeFormat("HH:mm:ss");
costomPlot->xAxis->setTicker(dateTick);
costomPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectAxes |
QCP::iSelectLegend | QCP::iSelectPlottables);//允许鼠标点击拖动
costomPlot->legend->setVisible(true); // 显示图例
costomPlot->legend->setBrush(QBrush(Qt::NoBrush));
for(int index = 0; index < lines.length(); ++index){
costomPlot->addGraph();
QPen pen;
pen.setWidth(2);
pen.setColor(lines[index].second);
costomPlot->graph(index)->setName(lines[index].first);
costomPlot->graph(index)->setPen(pen);
}
costomPlot->xAxis->setRange(0,40);
costomPlot->yAxis->setRange(0,140);
}
void MainWindow::setLine1Panel()
{
setShadow("#ffffff","#c0c0c0",ui->w1);
m_line1 = ui->widget_line1;
QPair<QString, QColor> temp_line;
temp_line.first = "温度";
temp_line.second = QColor(255, 59, 50);
QPair<QString, QColor> humi_line;
humi_line.first = "湿度";
humi_line.second = QColor(64, 158, 255);
QVector<QPair<QString, QColor>> lines;
lines.append(temp_line);
lines.append(humi_line);
addLine(m_line1,lines);
}
void MainWindow::setLine2Panel()
{
setShadow("#ffffff","#c0c0c0",ui->w2);
m_line2 = ui->widget_line2;
QPair<QString, QColor> light_line;
light_line.first = "光照";
light_line.second = QColor(251, 197, 49);
QPair<QString, QColor> soil_line;
soil_line.first = "地板";
soil_line.second = QColor(47, 54, 64);
QVector<QPair<QString, QColor>> lines;
lines.append(light_line);
lines.append(soil_line);
addLine(m_line2,lines);
}
void MainWindow::setPanelData(QCustomPlot *costomPlot, double data_0, double data_1)
{
//key的单位是秒
double x_time = QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0;
costomPlot->xAxis->setRange(x_time+0.25, 8, Qt::AlignRight);//设定x轴的范围
costomPlot->yAxis->rescale(true);
costomPlot->graph(0)->addData(x_time, data_0);//添加数据1到曲线1
costomPlot->graph(1)->addData(x_time, data_1);//添加数据1到曲线1
costomPlot->graph(0)->rescaleValueAxis(true);//添加数据1到曲线1
costomPlot->graph(1)->rescaleValueAxis(true);//添加数据1到曲线1
costomPlot->replot();
}
void MainWindow::on_btn_set_clicked()
{
cfgCom->show();
}
void MainWindow::receiveData(QByteArray data)
{
// 获取全部数据
qDebug() << "获取数据" << data;
TOOL::JSON * json = new TOOL::JSON(data);
if(json->IsEmpty()){
return;
}
bool temp_state = static_cast<bool>(json->Get<int>("state","tempState"));
bool humi_state = static_cast<bool>(json->Get<int>("state","humiState"));
bool light_state = static_cast<bool>(json->Get<int>("state","lightState"));
bool soil_state = static_cast<bool>(json->Get<int>("state","soilState"));
temp->setValue(QString("%1").arg(json->Get<int>("data","temp")),temp_state);
humi->setValue(QString("%1").arg(json->Get<int>("data","humi")),humi_state);
setPanelData(m_line1,json->Get<int>("data","temp"),json->Get<int>("data","humi"));
light->setValue(QString("%1").arg(json->Get<int>("data","light")),light_state) ;
soil->setValue(QString("%1").arg(json->Get<int>("data","soil")),soil_state);
setPanelData(m_line2,json->Get<int>("data","light"),json->Get<int>("data","soil"));
// 默认自动控制
if(json->Get<int>("state","ctrl_model")){
ui->comboBox_auto->setCurrentText("自动");
// 设置控制面板
temp_ctl->setState(temp_state);
humi_ctl->setState(humi_state);
light_ctl->setState(light_state);
soil_ctl->setState(soil_state);
return;
}
ui->comboBox_auto->setCurrentText("手动");
}
void MainWindow::on_comboBox_auto_currentTextChanged(const QString &arg1)
{
QString cmd = "{\"%1\":\"%2\"}";
// 切换模式
if(arg1 == "自动"){
cmd.arg("On");
cfgCom->writeData(cmd.arg("auto","On"));
temp_ctl->disableCtrl(true);
humi_ctl->disableCtrl(true);
light_ctl->disableCtrl(true);
soil_ctl->disableCtrl(true);
}
else{
cmd.arg("Off");
cfgCom->writeData(cmd.arg("auto","Off"));
temp_ctl->disableCtrl(false);
humi_ctl->disableCtrl(false);
light_ctl->disableCtrl(false);
soil_ctl->disableCtrl(false);
}
}
void MainWindow::on_comboBox_model_currentTextChanged(const QString &arg1)
{
if(arg1 == "日间模式"){
QFile qssFile(":/qss/light.qss"); // 使用资源文件加载QSS文件
if (qssFile.open(QFile::ReadOnly | QFile::Text))
{
QString styleSheet = QLatin1String(qssFile.readAll());
qssFile.close();
// 设置加载的样式表为全局样式表
qApp->setStyleSheet(styleSheet);
}
}
else{
QFile qssFile(":/qss/dark.qss"); // 使用资源文件加载QSS文件
if (qssFile.open(QFile::ReadOnly | QFile::Text))
{
QString styleSheet = QLatin1String(qssFile.readAll());
qssFile.close();
// 设置加载的样式表为全局样式表
qApp->setStyleSheet(styleSheet);
}
}
}

@ -1,89 +0,0 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QFrame>
#include <QMainWindow>
#include <QTimer>
#include <QLabel>
#include "datapanel.h"
#include "controlpanel.h"
#include "qcustomplot.h"
#include <QPair>
#include <QColor>
#include "cfgcom.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
void showEvent(QShowEvent * event) override;
public Q_SLOTS:
// 时间显示
void timeShow();
public:
void uiInit();
void dataPanelInit();
void ctlPanelInit();
void setShadow(QString background_color,QString shadow_color,QWidget *widget,bool bac_none = false, qint64 radius = 10);
void dataManageHandle();
void tiemPlugsInit();
void linePanelInit();
void addLine(QCustomPlot *costomPlot,QVector<QPair<QString,QColor>> lines);
void setLine1Panel();
void setLine2Panel();
void setPanelData(QCustomPlot *costomPlot,double data_0,double data_1);
private slots:
void on_btn_set_clicked();
void on_comboBox_auto_currentTextChanged(const QString &arg1);
void on_comboBox_model_currentTextChanged(const QString &arg1);
Q_SIGNALS:
void sendData(QString data);
public Q_SLOTS:
void receiveData(QByteArray data);
private:
Ui::MainWindow *ui;
QSharedPointer<QTimer> timer;
DataPanel * temp;
DataPanel * humi;
DataPanel * light;
DataPanel * soil;
ControlPanel * temp_ctl;
ControlPanel * humi_ctl;
ControlPanel * light_ctl;
ControlPanel * soil_ctl;
QCustomPlot * m_line1;
QCustomPlot * m_line2;
CfgCom * cfgCom;
};
#endif // MAINWINDOW_H

@ -1,765 +0,0 @@
<?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>1136</width>
<height>668</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>1136</width>
<height>668</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1136</width>
<height>668</height>
</size>
</property>
<property name="windowTitle">
<string>智慧家庭</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>41</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>41</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>440</width>
<height>41</height>
</size>
</property>
<property name="font">
<font>
<pointsize>20</pointsize>
</font>
</property>
<property name="text">
<string>智慧家庭--仿真模拟</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>41</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>353</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>353</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btn_set">
<property name="minimumSize">
<size>
<width>35</width>
<height>35</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>35</width>
<height>35</height>
</size>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lbl_titelBac">
<property name="minimumSize">
<size>
<width>380</width>
<height>250</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>380</width>
<height>250</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">border-image: url(:/images/dp.jpg);
border-radius:5px;</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_dataManage">
<item row="0" column="1">
<widget class="QFrame" name="frame_humi">
<property name="minimumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QFrame" name="frame_light">
<property name="minimumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QFrame" name="frame_temp">
<property name="minimumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_soil">
<property name="minimumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>185</width>
<height>170</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QFrame" name="frame_temp_ctl">
<property name="minimumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<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>
<widget class="QFrame" name="frame_humi_ctl">
<property name="minimumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<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>
<widget class="QFrame" name="frame_light_ctl">
<property name="minimumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<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>
<widget class="QFrame" name="frame_soil_ctl">
<property name="minimumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>346</width>
<height>145</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QFrame" name="frame_time">
<property name="minimumSize">
<size>
<width>380</width>
<height>255</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>380</width>
<height>255</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_14">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<property name="spacing">
<number>16</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>设备控制:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_auto">
<property name="minimumSize">
<size>
<width>80</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>32</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true">QComboBox{
border: 2px solid #e0e1e3;/*设置线宽*/
border-radius: 5px;/*圆角*/
padding: 0px 10px 0px 10px; /*针对于组合框中的文本内容*/
}</string>
</property>
<item>
<property name="text">
<string>手动</string>
</property>
</item>
<item>
<property name="text">
<string>自动</string>
</property>
</item>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_15">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="lbl_timeIcon">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_model">
<property name="minimumSize">
<size>
<width>110</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>110</width>
<height>32</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true">QComboBox{
border: 2px solid #e0e1e3;/*设置线宽*/
border-radius: 5px;/*圆角*/
padding: 0px 10px 0px 10px; /*针对于组合框中的文本内容*/
}</string>
</property>
<item>
<property name="text">
<string>日间模式</string>
</property>
</item>
<item>
<property name="text">
<string>夜间模式</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_8">
<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>
<widget class="QLabel" name="lbl_dateShow">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
<property name="text">
<string>2023-09-03</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_14">
<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>
<widget class="QLabel" name="lbl_timeShow">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
<property name="text">
<string>00:00:00</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_13">
<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>
<widget class="QLabel" name="lbl_weekShow">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
<property name="text">
<string>周末</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<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>
<widget class="QWidget" name="w1" native="true">
<property name="minimumSize">
<size>
<width>380</width>
<height>165</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>380</width>
<height>165</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QCustomPlot" name="widget_line1" native="true"/>
</item>
</layout>
</widget>
</item>
<item>
<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>
<widget class="QWidget" name="w2" native="true">
<property name="minimumSize">
<size>
<width>380</width>
<height>165</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>380</width>
<height>165</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QCustomPlot" name="widget_line2" native="true"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>QCustomPlot</class>
<extends>QWidget</extends>
<header location="global">qcustomplot.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,649 +0,0 @@
QPalette{background:#444444;}*{outline:0px;color:#DCDCDC;}
QDialog{
background:#484848;
}
QMainWindow{
background:#484848;
}
QWidget[form="true"],QLabel[frameShape="1"]{
border:1px solid #242424;
border-radius:0px;
}
QWidget[form="bottom"]{
background:#484848;
}
QWidget[form="bottom"] .QFrame{
border:1px solid #DCDCDC;
}
QWidget[form="bottom"] QLabel,QWidget[form="title"] QLabel{
border-radius:0px;
color:#DCDCDC;
background:none;
border-style:none;
}
QWidget[form="title"],QWidget[nav="left"],QWidget[nav="top"] QAbstractButton{
border-style:none;
border-radius:0px;
padding:5px;
color:#DCDCDC;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QWidget[nav="top"] QAbstractButton:hover,QWidget[nav="top"] QAbstractButton:pressed,QWidget[nav="top"] QAbstractButton:checked{
border-style:solid;
border-width:0px 0px 2px 0px;
padding:4px 4px 2px 4px;
border-color:#00BB9E;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
QWidget[nav="left"] QAbstractButton{
border-radius:0px;
color:#DCDCDC;
background:none;
border-style:none;
}
QWidget[nav="left"] QAbstractButton:hover{
color:#FFFFFF;
background-color:#00BB9E;
}
QWidget[nav="left"] QAbstractButton:checked,QWidget[nav="left"] QAbstractButton:pressed{
color:#DCDCDC;
border-style:solid;
border-width:0px 0px 0px 2px;
padding:4px 4px 4px 2px;
border-color:#00BB9E;
background-color:#444444;
}
QWidget[video="true"] QLabel{
color:#DCDCDC;
border:1px solid #242424;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QWidget[video="true"] QLabel:focus{
border:1px solid #00BB9E;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{
border:1px solid #242424;
border-radius:3px;
padding:2px;
background:none;
selection-background-color:#484848;
selection-color:#DCDCDC;
}
QLineEdit:focus,QTextEdit:focus,QPlainTextEdit:focus,QSpinBox:focus,QDoubleSpinBox:focus,QComboBox:focus,QDateEdit:focus,QTimeEdit:focus,QDateTimeEdit:focus,QLineEdit:hover,QTextEdit:hover,QPlainTextEdit:hover,QSpinBox:hover,QDoubleSpinBox:hover,QComboBox:hover,QDateEdit:hover,QTimeEdit:hover,QDateTimeEdit:hover{
border:1px solid #242424;
}
QLineEdit[echoMode="2"]{
lineedit-password-character:9679;
}
.QFrame{
border:1px solid #242424;
border-radius:3px;
}
.QGroupBox{
border:1px solid #242424;
border-radius:5px;
margin-top:3ex;
}
.QGroupBox::title{
subcontrol-origin:margin;
position:relative;
left:10px;
}
.QPushButton,.QToolButton{
border-style:none;
border:1px solid #242424;
color:#DCDCDC;
padding:5px;
min-height:15px;
border-radius:5px;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
.QPushButton:hover,.QToolButton:hover{
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
.QPushButton:pressed,.QToolButton:pressed{
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
.QToolButton::menu-indicator{
image:None;
}
QToolButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
border-radius:3px;
color:#DCDCDC;
padding:3px;
margin:0px;
background:none;
border-style:none;
}
QToolButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{
color:#FFFFFF;
margin:1px 1px 2px 1px;
background-color:rgba(51,127,209,230);
}
QPushButton#btnMenu_Close:hover{
color:#FFFFFF;
margin:1px 1px 2px 1px;
background-color:rgba(238,0,0,128);
}
QRadioButton::indicator{
width:15px;
height:15px;
}
QRadioButton::indicator::unchecked{
image:url(:/qss/psblack/radiobutton_unchecked.png);
}
QRadioButton::indicator::unchecked:disabled{
image:url(:/qss/psblack/radiobutton_unchecked_disable.png);
}
QRadioButton::indicator::checked{
image:url(:/qss/psblack/radiobutton_checked.png);
}
QRadioButton::indicator::checked:disabled{
image:url(:/qss/psblack/radiobutton_checked_disable.png);
}
QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{
padding:0px -3px 0px 3px;
}
QCheckBox::indicator,QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{
width:13px;
height:13px;
}
QCheckBox::indicator:unchecked,QGroupBox::indicator:unchecked,QTreeWidget::indicator:unchecked,QListWidget::indicator:unchecked{
image:url(:/qss/psblack/checkbox_unchecked.png);
}
QCheckBox::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled,QTreeWidget::indicator:unchecked:disabled,QListWidget::indicator:disabled{
image:url(:/qss/psblack/checkbox_unchecked_disable.png);
}
QCheckBox::indicator:checked,QGroupBox::indicator:checked,QTreeWidget::indicator:checked,QListWidget::indicator:checked{
image:url(:/qss/psblack/checkbox_checked.png);
}
QCheckBox::indicator:checked:disabled,QGroupBox::indicator:checked:disabled,QTreeWidget::indicator:checked:disabled,QListWidget::indicator:checked:disabled{
image:url(:/qss/psblack/checkbox_checked_disable.png);
}
QCheckBox::indicator:indeterminate,QGroupBox::indicator:indeterminate,QTreeWidget::indicator:indeterminate,QListWidget::indicator:indeterminate{
image:url(:/qss/psblack/checkbox_parcial.png);
}
QCheckBox::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeWidget::indicator:indeterminate:disabled,QListWidget::indicator:indeterminate:disabled{
image:url(:/qss/psblack/checkbox_parcial_disable.png);
}
QTimeEdit::up-button,QDateEdit::up-button,QDateTimeEdit::up-button,QDoubleSpinBox::up-button,QSpinBox::up-button{
image:url(:/qss/psblack/add_top.png);
width:10px;
height:10px;
padding:2px 5px 0px 0px;
}
QTimeEdit::down-button,QDateEdit::down-button,QDateTimeEdit::down-button,QDoubleSpinBox::down-button,QSpinBox::down-button{
image:url(:/qss/psblack/add_bottom.png);
width:10px;
height:10px;
padding:0px 5px 2px 0px;
}
QTimeEdit::up-button:pressed,QDateEdit::up-button:pressed,QDateTimeEdit::up-button:pressed,QDoubleSpinBox::up-button:pressed,QSpinBox::up-button:pressed{
top:-2px;
}
QTimeEdit::down-button:pressed,QDateEdit::down-button:pressed,QDateTimeEdit::down-button:pressed,QDoubleSpinBox::down-button:pressed,QSpinBox::down-button:pressed,QSpinBox::down-button:pressed{
bottom:-2px;
}
QComboBox::down-arrow,QDateEdit[calendarPopup="true"]::down-arrow,QTimeEdit[calendarPopup="true"]::down-arrow,QDateTimeEdit[calendarPopup="true"]::down-arrow{
image:url(:/qss/psblack/add_bottom.png);
width:10px;
height:10px;
right:2px;
}
QComboBox::drop-down,QDateEdit::drop-down,QTimeEdit::drop-down,QDateTimeEdit::drop-down{
subcontrol-origin:padding;
subcontrol-position:top right;
width:15px;
border-left-width:0px;
border-left-style:solid;
border-top-right-radius:3px;
border-bottom-right-radius:3px;
border-left-color:#242424;
}
QComboBox::drop-down:on{
top:1px;
}
QMenuBar::item{
color:#DCDCDC;
background-color:#484848;
margin:0px;
padding:3px 10px;
}
QMenu,QMenuBar,QMenu:disabled,QMenuBar:disabled{
color:#DCDCDC;
background-color:#484848;
border:1px solid #242424;
margin:0px;
}
QMenu::item{
padding:3px 20px;
}
QMenu::indicator{
width:13px;
height:13px;
}
QMenu::item:selected,QMenuBar::item:selected{
color:#DCDCDC;
border:0px solid #242424;
background:#646464;
}
QMenu::separator{
height:1px;
background:#242424;
}
QProgressBar{
min-height:10px;
background:#484848;
border-radius:5px;
text-align:center;
border:1px solid #484848;
}
QProgressBar:chunk{
border-radius:5px;
background-color:#242424;
}
QSlider::groove:horizontal{
background:#484848;
height:8px;
border-radius:4px;
}
QSlider::add-page:horizontal{
background:#484848;
height:8px;
border-radius:4px;
}
QSlider::sub-page:horizontal{
background:#242424;
height:8px;
border-radius:4px;
}
QSlider::handle:horizontal{
width:13px;
margin-top:-3px;
margin-bottom:-3px;
border-radius:6px;
background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424);
}
QSlider::groove:vertical{
width:8px;
border-radius:4px;
background:#484848;
}
QSlider::add-page:vertical{
width:8px;
border-radius:4px;
background:#484848;
}
QSlider::sub-page:vertical{
width:8px;
border-radius:4px;
background:#242424;
}
QSlider::handle:vertical{
height:14px;
margin-left:-3px;
margin-right:-3px;
border-radius:6px;
background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424);
}
QScrollBar:horizontal{
background:#484848;
padding:0px;
border-radius:6px;
max-height:12px;
}
QScrollBar::handle:horizontal{
background:#525252;
min-width:50px;
border-radius:6px;
}
QScrollBar::handle:horizontal:hover{
background:#242424;
}
QScrollBar::handle:horizontal:pressed{
background:#242424;
}
QScrollBar::add-page:horizontal{
background:none;
}
QScrollBar::sub-page:horizontal{
background:none;
}
QScrollBar::add-line:horizontal{
background:none;
}
QScrollBar::sub-line:horizontal{
background:none;
}
QScrollBar:vertical{
background:#484848;
padding:0px;
border-radius:6px;
max-width:12px;
}
QScrollBar::handle:vertical{
background:#525252;
min-height:50px;
border-radius:6px;
}
QScrollBar::handle:vertical:hover{
background:#242424;
}
QScrollBar::handle:vertical:pressed{
background:#242424;
}
QScrollBar::add-page:vertical{
background:none;
}
QScrollBar::sub-page:vertical{
background:none;
}
QScrollBar::add-line:vertical{
background:none;
}
QScrollBar::sub-line:vertical{
background:none;
}
QScrollArea{
border:0px;
}
QTreeView,QListView,QTableView,QTabWidget::pane{
border:1px solid #242424;
selection-background-color:#646464;
selection-color:#DCDCDC;
alternate-background-color:#525252;
gridline-color:#242424;
}
QTreeView::branch:closed:has-children{
margin:4px;
border-image:url(:/qss/psblack/branch_open.png);
}
QTreeView::branch:open:has-children{
margin:4px;
border-image:url(:/qss/psblack/branch_close.png);
}
QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{
background:#444444;
}
QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{
color:#DCDCDC;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QTableView::item:hover,QListView::item:hover,QTreeView::item:hover{
color:#DCDCDC;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
QTableView::item,QListView::item,QTreeView::item{
padding:1px;
margin:0px;
}
QHeaderView::section,QTableCornerButton:section{
padding:3px;
margin:0px;
color:#DCDCDC;
border:1px solid #242424;
border-left-width:0px;
border-right-width:1px;
border-top-width:0px;
border-bottom-width:1px;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
QTabBar::tab{
border:1px solid #242424;
color:#DCDCDC;
margin:0px;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
QTabBar::tab:selected,QTabBar::tab:hover{
border-style:solid;
border-color:#00BB9E;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QTabBar::tab:top,QTabBar::tab:bottom{
padding:3px 8px 3px 8px;
}
QTabBar::tab:left,QTabBar::tab:right{
padding:8px 3px 8px 3px;
}
QTabBar::tab:top:selected,QTabBar::tab:top:hover{
border-width:2px 0px 0px 0px;
}
QTabBar::tab:right:selected,QTabBar::tab:right:hover{
border-width:0px 0px 0px 2px;
}
QTabBar::tab:bottom:selected,QTabBar::tab:bottom:hover{
border-width:0px 0px 2px 0px;
}
QTabBar::tab:left:selected,QTabBar::tab:left:hover{
border-width:0px 2px 0px 0px;
}
QTabBar::tab:first:top:selected,QTabBar::tab:first:top:hover,QTabBar::tab:first:bottom:selected,QTabBar::tab:first:bottom:hover{
border-left-width:1px;
border-left-color:#242424;
}
QTabBar::tab:first:left:selected,QTabBar::tab:first:left:hover,QTabBar::tab:first:right:selected,QTabBar::tab:first:right:hover{
border-top-width:1px;
border-top-color:#242424;
}
QTabBar::tab:last:top:selected,QTabBar::tab:last:top:hover,QTabBar::tab:last:bottom:selected,QTabBar::tab:last:bottom:hover{
border-right-width:1px;
border-right-color:#242424;
}
QTabBar::tab:last:left:selected,QTabBar::tab:last:left:hover,QTabBar::tab:last:right:selected,QTabBar::tab:last:right:hover{
border-bottom-width:1px;
border-bottom-color:#242424;
}
QStatusBar::item{
border:0px solid #484848;
border-radius:3px;
}
QToolBox::tab,QGroupBox#gboxDevicePanel,QGroupBox#gboxDeviceTitle,QFrame#gboxDevicePanel,QFrame#gboxDeviceTitle{
padding:3px;
border-radius:5px;
color:#DCDCDC;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QToolTip{
border:0px solid #DCDCDC;
padding:1px;
color:#DCDCDC;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QToolBox::tab:selected{
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
}
QPrintPreviewDialog QToolButton{
border:0px solid #DCDCDC;
border-radius:0px;
margin:0px;
padding:3px;
background:none;
}
QColorDialog QPushButton,QFileDialog QPushButton{
min-width:80px;
}
QToolButton#qt_calendar_prevmonth{
icon-size:0px;
min-width:20px;
image:url(:/qss/psblack/calendar_prevmonth.png);
}
QToolButton#qt_calendar_nextmonth{
icon-size:0px;
min-width:20px;
image:url(:/qss/psblack/calendar_nextmonth.png);
}
QToolButton#qt_calendar_prevmonth,QToolButton#qt_calendar_nextmonth,QToolButton#qt_calendar_monthbutton,QToolButton#qt_calendar_yearbutton{
border:0px solid #DCDCDC;
border-radius:3px;
margin:3px 3px 3px 3px;
padding:3px;
background:none;
}
QToolButton#qt_calendar_prevmonth:hover,QToolButton#qt_calendar_nextmonth:hover,QToolButton#qt_calendar_monthbutton:hover,QToolButton#qt_calendar_yearbutton:hover,QToolButton#qt_calendar_prevmonth:pressed,QToolButton#qt_calendar_nextmonth:pressed,QToolButton#qt_calendar_monthbutton:pressed,QToolButton#qt_calendar_yearbutton:pressed{
border:1px solid #242424;
}
QCalendarWidget QSpinBox#qt_calendar_yearedit{
margin:2px;
}
QCalendarWidget QToolButton::menu-indicator{
image:None;
}
QCalendarWidget QTableView{
border-width:0px;
}
QCalendarWidget QWidget#qt_calendar_navigationbar{
border:1px solid #242424;
border-width:1px 1px 0px 1px;
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
}
QComboBox QAbstractItemView::item{
min-height:20px;
min-width:10px;
}
QTableView[model="true"]::item{
padding:0px;
margin:0px;
}
QTableView QLineEdit,QTableView QComboBox,QTableView QSpinBox,QTableView QDoubleSpinBox,QTableView QDateEdit,QTableView QTimeEdit,QTableView QDateTimeEdit{
border-width:0px;
border-radius:0px;
}
QTableView QLineEdit:focus,QTableView QComboBox:focus,QTableView QSpinBox:focus,QTableView QDoubleSpinBox:focus,QTableView QDateEdit:focus,QTableView QTimeEdit:focus,QTableView QDateTimeEdit:focus{
border-width:0px;
border-radius:0px;
}
QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{
background:#444444;
}
*:disabled{
background:#444444;
border-color:#484848;
}
/*TextColor:#DCDCDC*/
/*PanelColor:#444444*/
/*BorderColor:#242424*/
/*NormalColorStart:#484848*/
/*NormalColorEnd:#383838*/
/*DarkColorStart:#646464*/
/*DarkColorEnd:#525252*/
/*HighColor:#00BB9E*/

@ -1,559 +0,0 @@
/*
Aqua Style Sheet for QT Applications
Author: Jaime A. Quiroga P.
Company: GTRONICK
Last updated: 22/01/2019, 07:55.
Available at: https://github.com/GTRONICK/QSS/blob/master/Aqua.qss
*/
QMainWindow {
background-color:#ececec;
}
QTextEdit {
border-width: 1px;
border-style: solid;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QPlainTextEdit {
border-width: 1px;
border-style: solid;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QToolButton {
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(255,255,255);
}
QToolButton:hover{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(195, 195, 195), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(197, 197, 197), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(197, 197, 197));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(195, 195, 195), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(255,255,255);
}
QToolButton:pressed{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(142,142,142);
}
QPushButton{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(255,255,255);
}
QPushButton::default{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(255,255,255);
}
QPushButton:hover{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(195, 195, 195), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(197, 197, 197), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(197, 197, 197));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(195, 195, 195), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(255,255,255);
}
QPushButton:pressed{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: rgb(0,0,0);
padding: 2px;
background-color: rgb(142,142,142);
}
QPushButton:disabled{
border-style: solid;
border-top-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-right-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(217, 217, 217), stop:1 rgb(227, 227, 227));
border-left-color: qlineargradient(spread:pad, x1:0, y1:0.5, x2:1, y2:0.5, stop:0 rgb(227, 227, 227), stop:1 rgb(217, 217, 217));
border-bottom-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgb(215, 215, 215), stop:1 rgb(222, 222, 222));
border-width: 1px;
border-radius: 5px;
color: #808086;
padding: 2px;
background-color: rgb(142,142,142);
}
QLineEdit {
border-width: 1px; border-radius: 4px;
border-style: solid;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QLabel {
color: #000000;
}
QLCDNumber {
color: rgb(0, 113, 255, 255);
}
QProgressBar {
text-align: center;
color: rgb(240, 240, 240);
border-width: 1px;
border-radius: 10px;
border-color: rgb(230, 230, 230);
border-style: solid;
background-color:rgb(207,207,207);
}
QProgressBar::chunk {
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(49, 147, 250, 255), stop:1 rgba(34, 142, 255, 255));
border-radius: 10px;
}
QMenuBar {
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(207, 209, 207, 255), stop:1 rgba(230, 229, 230, 255));
}
QMenuBar::item {
color: #000000;
spacing: 3px;
padding: 1px 4px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(207, 209, 207, 255), stop:1 rgba(230, 229, 230, 255));
}
QMenuBar::item:selected {
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
color: #FFFFFF;
}
QMenu::item:selected {
border-style: solid;
border-top-color: transparent;
border-right-color: transparent;
border-left-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
border-bottom-color: transparent;
border-left-width: 2px;
color: #000000;
padding-left:15px;
padding-top:4px;
padding-bottom:4px;
padding-right:7px;
}
QMenu::item {
border-style: solid;
border-top-color: transparent;
border-right-color: transparent;
border-left-color: transparent;
border-bottom-color: transparent;
border-bottom-width: 1px;
color: #000000;
padding-left:17px;
padding-top:4px;
padding-bottom:4px;
padding-right:7px;
}
QTabWidget {
color:rgb(0,0,0);
background-color:#000000;
}
QTabWidget::pane {
border-color: rgb(223,223,223);
background-color:rgb(226,226,226);
border-style: solid;
border-width: 2px;
border-radius: 6px;
}
QTabBar::tab:first {
border-style: solid;
border-left-width:1px;
border-right-width:0px;
border-top-width:1px;
border-bottom-width:1px;
border-top-color: rgb(209,209,209);
border-left-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(209, 209, 209, 209), stop:1 rgba(229, 229, 229, 229));
border-bottom-color: rgb(229,229,229);
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
color: #000000;
padding: 3px;
margin-left:0px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(247, 247, 247, 255), stop:1 rgba(255, 255, 255, 255));
}
QTabBar::tab:last {
border-style: solid;
border-width:1px;
border-top-color: rgb(209,209,209);
border-left-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(209, 209, 209, 209), stop:1 rgba(229, 229, 229, 229));
border-right-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(209, 209, 209, 209), stop:1 rgba(229, 229, 229, 229));
border-bottom-color: rgb(229,229,229);
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
color: #000000;
padding: 3px;
margin-left:0px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(247, 247, 247, 255), stop:1 rgba(255, 255, 255, 255));
}
QTabBar::tab {
border-style: solid;
border-top-width:1px;
border-bottom-width:1px;
border-left-width:1px;
border-top-color: rgb(209,209,209);
border-left-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(209, 209, 209, 209), stop:1 rgba(229, 229, 229, 229));
border-bottom-color: rgb(229,229,229);
color: #000000;
padding: 3px;
margin-left:0px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(247, 247, 247, 255), stop:1 rgba(255, 255, 255, 255));
}
QTabBar::tab:selected, QTabBar::tab:last:selected, QTabBar::tab:hover {
border-style: solid;
border-left-width:1px;
border-right-color: transparent;
border-top-color: rgb(209,209,209);
border-left-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(209, 209, 209, 209), stop:1 rgba(229, 229, 229, 229));
border-bottom-color: rgb(229,229,229);
color: #FFFFFF;
padding: 3px;
margin-left:0px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QTabBar::tab:selected, QTabBar::tab:first:selected, QTabBar::tab:hover {
border-style: solid;
border-left-width:1px;
border-bottom-width:1px;
border-top-width:1px;
border-right-color: transparent;
border-top-color: rgb(209,209,209);
border-left-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(209, 209, 209, 209), stop:1 rgba(229, 229, 229, 229));
border-bottom-color: rgb(229,229,229);
color: #FFFFFF;
padding: 3px;
margin-left:0px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QCheckBox {
color: #000000;
padding: 2px;
}
QCheckBox:disabled {
color: #808086;
padding: 2px;
}
QCheckBox:hover {
border-radius:4px;
border-style:solid;
padding-left: 1px;
padding-right: 1px;
padding-bottom: 1px;
padding-top: 1px;
border-width:1px;
border-color: transparent;
}
QCheckBox::indicator:checked {
height: 10px;
width: 10px;
border-style:solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
color: #000000;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QCheckBox::indicator:unchecked {
height: 10px;
width: 10px;
border-style:solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
color: #000000;
}
QRadioButton {
color: 000000;
padding: 1px;
}
QRadioButton::indicator:checked {
height: 10px;
width: 10px;
border-style:solid;
border-radius:5px;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
color: #a9b7c6;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QRadioButton::indicator:!checked {
height: 10px;
width: 10px;
border-style:solid;
border-radius:5px;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
color: #a9b7c6;
background-color: transparent;
}
QStatusBar {
color:#027f7f;
}
QSpinBox {
border-style: solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QDoubleSpinBox {
border-style: solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QTimeEdit {
border-style: solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QDateTimeEdit {
border-style: solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QDateEdit {
border-style: solid;
border-width: 1px;
border-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(0, 113, 255, 255), stop:1 rgba(91, 171, 252, 255));
}
QToolBox {
color: #a9b7c6;
background-color:#000000;
}
QToolBox::tab {
color: #a9b7c6;
background-color:#000000;
}
QToolBox::tab:selected {
color: #FFFFFF;
background-color:#000000;
}
QScrollArea {
color: #FFFFFF;
background-color:#000000;
}
QSlider::groove:horizontal {
height: 5px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(49, 147, 250, 255), stop:1 rgba(34, 142, 255, 255));
}
QSlider::groove:vertical {
width: 5px;
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(49, 147, 250, 255), stop:1 rgba(34, 142, 255, 255));
}
QSlider::handle:horizontal {
background: rgb(253,253,253);
border-style: solid;
border-width: 1px;
border-color: rgb(207,207,207);
width: 12px;
margin: -5px 0;
border-radius: 7px;
}
QSlider::handle:vertical {
background: rgb(253,253,253);
border-style: solid;
border-width: 1px;
border-color: rgb(207,207,207);
height: 12px;
margin: 0 -5px;
border-radius: 7px;
}
QSlider::add-page:horizontal {
background: rgb(181,181,181);
}
QSlider::add-page:vertical {
background: rgb(181,181,181);
}
QSlider::sub-page:horizontal {
background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(49, 147, 250, 255), stop:1 rgba(34, 142, 255, 255));
}
QSlider::sub-page:vertical {
background-color: qlineargradient(spread:pad, y1:0.5, x1:1, y2:0.5, x2:0, stop:0 rgba(49, 147, 250, 255), stop:1 rgba(34, 142, 255, 255));
}
QScrollBar:horizontal {
max-height: 20px;
border: 1px transparent grey;
margin: 0px 20px 0px 20px;
}
QScrollBar:vertical {
max-width: 20px;
border: 1px transparent grey;
margin: 20px 0px 20px 0px;
}
QScrollBar::handle:horizontal {
background: rgb(253,253,253);
border-style: solid;
border-width: 1px;
border-color: rgb(207,207,207);
border-radius: 7px;
min-width: 25px;
}
QScrollBar::handle:horizontal:hover {
background: rgb(253,253,253);
border-style: solid;
border-width: 1px;
border-color: rgb(147, 200, 200);
border-radius: 7px;
min-width: 25px;
}
QScrollBar::handle:vertical {
background: rgb(253,253,253);
border-style: solid;
border-width: 1px;
border-color: rgb(207,207,207);
border-radius: 7px;
min-height: 25px;
}
QScrollBar::handle:vertical:hover {
background: rgb(253,253,253);
border-style: solid;
border-width: 1px;
border-color: rgb(147, 200, 200);
border-radius: 7px;
min-height: 25px;
}
QScrollBar::add-line:horizontal {
border: 2px transparent grey;
border-top-right-radius: 7px;
border-bottom-right-radius: 7px;
background: rgba(34, 142, 255, 255);
width: 20px;
subcontrol-position: right;
subcontrol-origin: margin;
}
QScrollBar::add-line:horizontal:pressed {
border: 2px transparent grey;
border-top-right-radius: 7px;
border-bottom-right-radius: 7px;
background: rgb(181,181,181);
width: 20px;
subcontrol-position: right;
subcontrol-origin: margin;
}
QScrollBar::add-line:vertical {
border: 2px transparent grey;
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px;
background: rgba(34, 142, 255, 255);
height: 20px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::add-line:vertical:pressed {
border: 2px transparent grey;
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px;
background: rgb(181,181,181);
height: 20px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal {
border: 2px transparent grey;
border-top-left-radius: 7px;
border-bottom-left-radius: 7px;
background: rgba(34, 142, 255, 255);
width: 20px;
subcontrol-position: left;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal:pressed {
border: 2px transparent grey;
border-top-left-radius: 7px;
border-bottom-left-radius: 7px;
background: rgb(181,181,181);
width: 20px;
subcontrol-position: left;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical {
border: 2px transparent grey;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
background: rgba(34, 142, 255, 255);
height: 20px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical:pressed {
border: 2px transparent grey;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
background: rgb(181,181,181);
height: 20px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::left-arrow:horizontal {
border: 1px transparent grey;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
width: 6px;
height: 6px;
background: white;
}
QScrollBar::right-arrow:horizontal {
border: 1px transparent grey;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
width: 6px;
height: 6px;
background: white;
}
QScrollBar::up-arrow:vertical {
border: 1px transparent grey;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
width: 6px;
height: 6px;
background: white;
}
QScrollBar::down-arrow:vertical {
border: 1px transparent grey;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
width: 6px;
height: 6px;
background: white;
}
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background: none;
}

@ -1,13 +0,0 @@
<RCC>
<qresource prefix="/">
<file>images/dp.jpg</file>
<file>gif/fan.gif</file>
<file>gif/light.gif</file>
<file>icon/iconfont.ttf</file>
<file>gif/wet.gif</file>
<file>gif/water.gif</file>
<file>qss/dark.qss</file>
<file>qss/light.qss</file>
<file>images/ico.ico</file>
</qresource>
</RCC>

@ -1,75 +0,0 @@
#pragma execution_character_set("utf-8") // 转中文,防止中文显示乱码
#include "tool.h"
#include <QSettings>
// ===============================INI===============================
TOOL::INI::INI(QString ini_file) :
m_strFilePath(QString("%1/%2").arg(QCoreApplication::applicationDirPath(), ini_file)),
m_setIni(QString("%1/%2").arg(QCoreApplication::applicationDirPath(), ini_file), QSettings::IniFormat)
{
// 2023-10-11 校验文件是否存在
if (!FILE(QString("%1/%2").arg(QCoreApplication::applicationDirPath())).FileExists(ini_file)) {
qDebug() << QString("配置文件读取失败,检查是否存在或者中文路径或者权限问题%1").arg(m_strFilePath);
}
}
QVariant TOOL::INI::Get(QString section, QString key)
{
QString key_value = QString("%1/%2").arg(section, key);
if (!m_setIni.contains(section)) {
qDebug() << QString("节%1不存在").arg(section);
}
if (!m_setIni.contains(key_value))
{
qDebug() << QString("键%1不存在").arg(key_value);
}
return m_setIni.value(key_value);
}
void TOOL::INI::Set(QString section, QString key, QVariant value)
{
m_setIni.setValue(QString("%1/%2").arg(section,key),value);
m_setIni.sync();
}
// ============================FILE==============================
TOOL::FILE::FILE(QString file_path):
m_strFilePath(file_path)
{
}
bool TOOL::FILE::FileExists(QString file_name)
{
m_strFilePath = QString("%1/%2").arg(m_strFilePath, file_name);
m_file.setFileName(m_strFilePath);
return m_file.exists();
}
// ===========================JSON================================
TOOL::JSON::JSON(QByteArray byteArray):
root(load(byteArray))
{
}
QJsonObject TOOL::JSON::load(const QByteArray &byteArray)
{
QJsonObject jsonObject;
if (byteArray.isEmpty()) {
qDebug() << "JSON content is empty";
}
QJsonParseError err;
/* Parsing JSON into UTF-8 encoded JSON documents. */
QJsonDocument document = QJsonDocument::fromJson(byteArray, &err);
if(err.error!= QJsonParseError::NoError){
qDebug() << "JSON syntax error";
return jsonObject;
} else {
return document.object();
}
}

@ -1,89 +0,0 @@
#ifndef TOOL_H
#define TOOL_H
#include <QCoreApplication>
#include <QString>
#include <QVariant>
#include <QSettings>
#include <QFile>
#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonArray>
#include <QByteArray>
#include <QDebug>
namespace TOOL {
/**
* @brief The INI class ini
*/
class INI
{
public:
INI(QString ini_file);
QVariant Get(QString section,QString key);
void Set(QString section,QString key,QVariant value);
private:
QSettings m_setIni;
QString m_strFilePath;
};
/**
* @brief The FILE class
*/
class FILE
{
public:
FILE(QString file_path);
bool FileExists(QString file_name);
private:
QString m_strFilePath;
QFile m_file;
};
/**
* @brief The JSON class Json
*/
class JSON
{
public:
JSON(QByteArray byteArray);
template<class T, class ...Args>
T Get(Args... args){
QJsonObject temp_root = root;
// 解参数包
QStringList lst_json = { args... };
for(auto it = lst_json.begin(); it != lst_json.end(); ++ it){
if(temp_root[*it].isObject()){
temp_root = temp_root[*it].toObject();
continue;
}
if constexpr(std::is_same_v<T, bool>) {
return temp_root[*it].toBool();
} else if constexpr (std::is_integral_v<T> || std::is_floating_point_v<T>) {
return temp_root[*it].toDouble();
} else if constexpr (std::is_same_v<T, QString>) {
return temp_root[*it].toString();
} else if constexpr (std::is_same_v<T, std::string>) {
return temp_root[*it].toString().toStdString();
} else if constexpr (std::is_same_v<T, QJsonObject>) {
return temp_root[*it].toObject();
} else if constexpr (std::is_same_v<T, QJsonArray>) {
return temp_root[*it].toArray();
} else { // if constexpr (std::is_same_v<T, QJsonValue>) {
return temp_root[*it];
}
}
}
bool IsEmpty(){return root.isEmpty();}
private:
QJsonObject load(const QByteArray &byteArray);
private:
QJsonObject root;
};
}
#endif // TOOL_H

Binary file not shown.

@ -1,185 +0,0 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<WORKSPACE>
<FRAME activewindow="0">
<PLACEMENT>2c00000000000000010000000083ffff0083ffffffffffffffffffff050100002f0000002f07000018040000</PLACEMENT>
<WINDOW type="default" module="ISIS">
<editor metric="0" gridmajor="25400000" mode="00000001" zoom="-1" scale="52" flipped="0" gridminor="508000" gridmode="32" snapidx="2" snap="254000" xcursor="0" orgmode="0" snaprange="244230">
<world y1="-8890000" x1="-12700000" y2="8890000" x2="12700000"/>
<centre x="1016000" y="-2237430"/>
<origin x="0" y="0"/>
</editor>
</WINDOW>
</FRAME>
<MODULE name="ARES">
<editor metric="0" gridmajor="0" mode="00000000" zoom="10" scale="10" flipped="0" gridminor="0" gridmode="32" snapidx="3" snap="0" xcursor="0" orgmode="0" snaprange="0">
<world y1="-12700000" x1="-15240000" y2="12700000" x2="15240000"/>
<centre x="0" y="0"/>
<origin x="0" y="0"/>
</editor>
</MODULE>
<MODULE name="ISIS">
<editor metric="0" gridmajor="25400000" mode="00000001" zoom="-1" scale="52" flipped="0" gridminor="508000" gridmode="32" snapidx="2" snap="254000" xcursor="0" orgmode="0" snaprange="244230">
<world y1="-8890000" x1="-12700000" y2="8890000" x2="12700000"/>
<centre x="1016000" y="-2237430"/>
<origin x="0" y="0"/>
</editor>
</MODULE>
<MODULE name="VSMDEBUG">
<PWI>
<POPUP w="800" x="46" flags="00000002" y="163" h="200" pid="0" iid="-1">
<PROPERTIES>
<ITEM name="Message Column Width">-142</ITEM>
<ITEM name="ShowGrid">No</ITEM>
<ITEM name="Source Column Width">100</ITEM>
<ITEM name="Time Column Width">120</ITEM>
<ITEM name="Version">100</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="350" x="66" flags="00000032" y="183" h="200" pid="1" iid="-1">
<PROPERTIES>
<ITEM name="Address Column Width">100</ITEM>
<ITEM name="AutoResize">No</ITEM>
<ITEM name="Gridlines">Yes</ITEM>
<ITEM name="Name Column Width">100</ITEM>
<ITEM name="Previous Value Column Width">100</ITEM>
<ITEM name="ShowAddresses">Yes</ITEM>
<ITEM name="ShowPreviousValues">Yes</ITEM>
<ITEM name="ShowTypes">Yes</ITEM>
<ITEM name="ShowWatchPoint">Yes</ITEM>
<ITEM name="TriggerMode">0</ITEM>
<ITEM name="Type Column Width">100</ITEM>
<ITEM name="Value Column Width">100</ITEM>
<ITEM name="Version">100</ITEM>
<ITEM name="Watch Expression Column Width">100</ITEM>
<ITEM name="nItems">0</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="30" x="86" flags="00000008" y="203" h="16" pid="3" iid="1">
<PROPERTIES/>
</POPUP>
<POPUP w="8" x="106" flags="0000000a" y="223" h="1" pid="10" iid="1">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="8" x="126" flags="0000000a" y="243" h="32" pid="6" iid="1">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="146" flags="0000000a" y="263" h="32" pid="7" iid="1">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="166" flags="80000000" y="283" h="32" pid="14" iid="1">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="186" flags="0000000a" y="303" h="32" pid="4" iid="1">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000100</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="206" flags="0000000a" y="323" h="8" pid="13" iid="1">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000020</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="30" x="226" flags="00000008" y="343" h="16" pid="3" iid="6">
<PROPERTIES/>
</POPUP>
<POPUP w="8" x="246" flags="0000000a" y="363" h="1" pid="10" iid="6">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="8" x="266" flags="0000000a" y="383" h="32" pid="6" iid="6">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="286" flags="0000000a" y="403" h="32" pid="7" iid="6">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="306" flags="80000000" y="423" h="32" pid="14" iid="6">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000000</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="326" flags="0000000a" y="443" h="32" pid="4" iid="6">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000100</ITEM>
</PROPERTIES>
</POPUP>
<POPUP w="16" x="346" flags="0000000a" y="463" h="8" pid="13" iid="6">
<PROPERTIES>
<ITEM name="DataType">2</ITEM>
<ITEM name="DispChars">Yes</ITEM>
<ITEM name="DispFormat">2</ITEM>
<ITEM name="ShowChanges">Yes</ITEM>
<ITEM name="ShowToolTips">Yes</ITEM>
<ITEM name="TopLineAddress">00000020</ITEM>
</PROPERTIES>
</POPUP>
</PWI>
</MODULE>
</WORKSPACE>

@ -1,100 +0,0 @@
:100000000C9461000C947E000C947E000C947E0095
:100010000C947E000C947E000C947E000C947E0068
:100020000C947E000C947E000C947E000C947E0058
:100030000C947E000C947E000C947E000C947E0048
:100040000C945E010C947E000C947E000C947E0057
:100050000C947E000C947E000C947E000C947E0028
:100060000C947E000C947E00000000002400270009
:100070002A000000000023002600290000000000E4
:10008000250028002B0004040404040404040202D4
:100090000202020203030303030301020408102007
:1000A0004080010204081020010204081020000012
:1000B0000008000201000003040700000000000027
:1000C000000011241FBECFEFD8E0DEBFCDBF11E08E
:1000D000A0E0B1E0E0E3F6E002C005900D92A030B0
:1000E000B107D9F721E0A0E0B1E001C01D92AB302B
:1000F000B207E1F70E94A8010C9416030C940000CB
:10010000833081F028F4813099F08230A9F008958D
:100110008730A9F08830C9F08430B1F48091800034
:100120008F7D03C0809180008F7780938000089539
:1001300084B58F7784BD089584B58F7DFBCF809182
:10014000B0008F778093B00008958091B0008F7DCC
:10015000F9CF1F93CF93DF93E1EBF0E09491EDE9BA
:10016000F0E0D491E9E8F0E0C491CC23B9F0182F85
:10017000992319F0892F0E948000EC2FF0E0EE0FF8
:10018000FF1FE458FF4FA591B4918FB7F894EC91FD
:10019000111108C0D095DE23DC938FBFDF91CF9182
:1001A0001F910895DE2BF8CFCF93DF93282F30E0F7
:1001B000F901E255FF4F8491F901E656FF4FD491C2
:1001C000F901EA57FF4FC491CC23A1F081110E949D
:1001D0008000EC2FF0E0EE0FFF1FEE58FF4FA591CF
:1001E000B491EC91ED2381E090E009F480E0DF919F
:1001F000CF91089580E090E0FACFCF93DF9390E025
:10020000FC01E656FF4F24918A579F4FFC018491D1
:100210008823C9F090E0880F991FFC01E859FF4F2F
:10022000A591B491FC01E458FF4FC591D49161119F
:100230000DC09FB7F8948C91209582238C93888170
:10024000282328839FBFDF91CF910895623051F416
:100250009FB7F8943C91822F809583238C93E881FB
:100260002E2BEFCF8FB7F894EC912E2B2C938FBFC2
:10027000EACF3FB7F8948091050190910601A091D3
:100280000701B091080126B5A89B05C02F3F19F0C2
:100290000196A11DB11D3FBFBA2FA92F982F882706
:1002A000BC01CD01620F711D811D911D42E0660FE1
:1002B000771F881F991F4A95D1F708951F920F92B3
:1002C0000FB60F9211242F933F938F939F93AF9369
:1002D000BF938091010190910201A0910301B0911F
:1002E00004013091000123E0230F2D3758F50196CA
:1002F000A11DB11D20930001809301019093020183
:10030000A0930301B093040180910501909106012F
:10031000A0910701B09108010196A11DB11D809324
:10032000050190930601A0930701B0930801BF91C6
:10033000AF919F918F913F912F910F900FBE0F9092
:100340001F90189526E8230F0296A11DB11DD2CF4C
:10035000789484B5826084BD84B5816084BD85B5A0
:10036000826085BD85B5816085BD80916E008160AC
:1003700080936E0010928100809181008260809352
:100380008100809181008160809381008091800054
:100390008160809380008091B10084608093B1007F
:1003A0008091B00081608093B00080917A00846079
:1003B00080937A0080917A00826080937A008091A5
:1003C0007A00816080937A0080917A0080688093BF
:1003D0007A001092C10062E08DE00E94FD0062E0B0
:1003E0008BE00E94FD0060E08EE00E94FD0061E075
:1003F00083E00E94FD0090E4392E44244A9423E0D7
:10040000522E612C712C01EB10E0C0E0D0E08DE0A9
:100410000E94D40021E0892B09F420E020930A01F6
:100420008BE00E94D40021E0892B09F420E0209386
:10043000090130927C0080917A00806480937A0078
:1004400080917A0086FDFCCF80917800A0917900A0
:1004500090910A019923E1F090910901911118C03E
:10046000BA2FA82F2FEF30E00E940F03A3019201B3
:100470000E94BF02D22EC32EE22EF32E61E083E053
:100480000E94FD00E114F10471F580E00E94A900D2
:100490000E9439014B015C018CE2C82EDD24D3940B
:1004A000E12CF12C0E943901681979098A099B090C
:1004B000683E734081059105A8F321E0C21AD10876
:1004C000E108F10888EE880E83E0981EA11CB11C9B
:1004D000C114D104E104F10429F7209709F497CF5E
:1004E0000E94000094CF2FEFE216F10411F481E096
:1004F000CDCFF8018491833031F148F48130C9F0D7
:100500008230E1F0F0E8EF16F1048CF7BECF8730CF
:1005100031F1883061F18430A9F7809180008062E8
:10052000809380008D2D9C2D90938B0080938A006A
:10053000AFCF84B5806884BDD7BCAACF84B58062B4
:1005400084BDD8BCA5CF8091800080688093800056
:100550008D2D9C2D909389008093880099CF809158
:10056000B00080688093B000D092B30091CF8091AA
:10057000B00080628093B000D092B40089CF052E85
:1005800097FB1EF400940E94D60257FD07D00E94EC
:10059000DE0207FC03D04EF40C94D6025095409531
:1005A000309521953F4F4F4F5F4F0895909580951F
:1005B000709561957F4F8F4F9F4F0895A1E21A2E3E
:1005C000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FF7
:1005D000A217B307E407F50720F0A21BB30BE40B47
:1005E000F50B661F771F881F991F1A9469F760958E
:1005F0007095809590959B01AC01BD01CF01089548
:10060000A29FB001B39FC001A39F700D811D112453
:10061000911DB29F700D811D1124911D08950E949E
:100620000003B7FF0895821B930B0895F894FFCF42
:00000001FF
Loading…
Cancel
Save