新增文字标签,新增折线拖拽功能
This commit is contained in:
parent
deec2c2d63
commit
c1b1a0eb2e
|
|
@ -53,15 +53,19 @@ set(H_HEADER_FILES
|
||||||
include/util/baseSelector.h
|
include/util/baseSelector.h
|
||||||
include/util/creatingSelector.h
|
include/util/creatingSelector.h
|
||||||
include/util/movingSelector.h
|
include/util/movingSelector.h
|
||||||
|
include/util/subMovingSelector.h
|
||||||
include/util/rotationSelector.h
|
include/util/rotationSelector.h
|
||||||
include/util/scalingSelector.h
|
include/util/scalingSelector.h
|
||||||
include/util/editingSelector.h
|
include/util/editingSelector.h
|
||||||
include/util/connectingSelector.h
|
include/util/connectingSelector.h
|
||||||
|
include/util/linkMovingSelector.h
|
||||||
include/util/selectorManager.h
|
include/util/selectorManager.h
|
||||||
|
|
||||||
include/graphicsDataModel/fixedPortsModel.h
|
include/graphicsDataModel/fixedPortsModel.h
|
||||||
|
|
||||||
include/graphicsItem/itemControlHandle.h
|
include/graphicsItem/itemControlHandle.h
|
||||||
|
include/graphicsItem/handleRect.h
|
||||||
|
include/graphicsItem/handleText.h
|
||||||
include/graphicsItem/itemPort.h
|
include/graphicsItem/itemPort.h
|
||||||
include/graphicsItem/graphicsBaseItem.h
|
include/graphicsItem/graphicsBaseItem.h
|
||||||
include/graphicsItem/graphicsRectItem.h
|
include/graphicsItem/graphicsRectItem.h
|
||||||
|
|
@ -119,15 +123,19 @@ set(CPP_SOURCE_FILES
|
||||||
source/util/baseSelector.cpp
|
source/util/baseSelector.cpp
|
||||||
source/util/creatingSelector.cpp
|
source/util/creatingSelector.cpp
|
||||||
source/util/movingSelector.cpp
|
source/util/movingSelector.cpp
|
||||||
|
source/util/subMovingSelector.cpp
|
||||||
source/util/rotationSelector.cpp
|
source/util/rotationSelector.cpp
|
||||||
source/util/scalingSelector.cpp
|
source/util/scalingSelector.cpp
|
||||||
source/util/editingSelector.cpp
|
source/util/editingSelector.cpp
|
||||||
source/util/connectingSelector.cpp
|
source/util/connectingSelector.cpp
|
||||||
|
source/util/linkMovingSelector.cpp
|
||||||
source/util/selectorManager.cpp
|
source/util/selectorManager.cpp
|
||||||
|
|
||||||
source/graphicsDataModel/fixedPortsModel.cpp
|
source/graphicsDataModel/fixedPortsModel.cpp
|
||||||
|
|
||||||
source/graphicsItem/itemControlHandle.cpp
|
source/graphicsItem/itemControlHandle.cpp
|
||||||
|
source/graphicsItem/handleRect.cpp
|
||||||
|
source/graphicsItem/handleText.cpp
|
||||||
source/graphicsItem/itemPort.cpp
|
source/graphicsItem/itemPort.cpp
|
||||||
source/graphicsItem/graphicsBaseItem.cpp
|
source/graphicsItem/graphicsBaseItem.cpp
|
||||||
source/graphicsItem/graphicsRectItem.cpp
|
source/graphicsItem/graphicsRectItem.cpp
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,315 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 14.0.2, 2024-12-09T17:26:00. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{180d0b44-822c-4522-af92-2d8bdefcfe6f}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="qlonglong">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QString" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QString" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||||
|
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="bool" key="AutoTest.ApplyFilter">false</value>
|
||||||
|
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||||
|
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
|
||||||
|
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||||
|
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="ClangTools">
|
||||||
|
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||||
|
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||||
|
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||||
|
<value type="int" key="ClangTools.ParallelJobs">14</value>
|
||||||
|
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||||
|
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="DeviceType">Desktop</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.7.2 MinGW 64-bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.7.2 MinGW 64-bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.672.win64_mingw_kit</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<value type="QString" key="CMake.Build.Type">Debug</value>
|
||||||
|
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
|
||||||
|
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
|
||||||
|
-DCMAKE_BUILD_TYPE:STRING=Debug
|
||||||
|
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
|
||||||
|
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
|
||||||
|
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
|
||||||
|
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
|
||||||
|
-DCMAKE_GENERATOR:STRING=Ninja
|
||||||
|
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake</value>
|
||||||
|
<value type="int" key="EnableQmlDebugging">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\work\project\DiagramDesigner\DiagramDesigner\build\Desktop_Qt_6_7_2_MinGW_64_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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">all</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">clean</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<value type="QString" key="CMake.Build.Type">Release</value>
|
||||||
|
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
|
||||||
|
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
|
||||||
|
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||||
|
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
|
||||||
|
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
|
||||||
|
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
|
||||||
|
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
|
||||||
|
-DCMAKE_GENERATOR:STRING=Ninja
|
||||||
|
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\work\project\DiagramDesigner\DiagramDesigner\build\Desktop_Qt_6_7_2_MinGW_64_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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">all</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">clean</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
|
<value type="QString" key="CMake.Build.Type">Debug</value>
|
||||||
|
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
|
||||||
|
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
|
||||||
|
-DCMAKE_BUILD_TYPE:STRING=Debug
|
||||||
|
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
|
||||||
|
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
|
||||||
|
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
|
||||||
|
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
|
||||||
|
-DCMAKE_GENERATOR:STRING=Ninja
|
||||||
|
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake</value>
|
||||||
|
<value type="QString" key="CMake.Source.Directory">D:\work\project\DiagramDesigner\DiagramDesigner</value>
|
||||||
|
<value type="int" key="EnableQmlDebugging">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\work\project\DiagramDesigner\DiagramDesigner\build\Desktop_Qt_6_7_2_MinGW_64_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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">all</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">clean</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
|
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||||
|
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">DiagramDesigner</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.DiagramDesigner</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">DiagramDesigner</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/work/project/DiagramDesigner/DiagramDesigner/build/Desktop_Qt_6_7_2_MinGW_64_bit-Debug/x64/bin</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="qlonglong">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">22</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">22</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
||||||
|
|
@ -0,0 +1,315 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 14.0.2, 2024-12-09T17:28:02. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{f86a2956-ea1a-464e-91b2-1ab824389029}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="qlonglong">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QString" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QString" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||||
|
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||||
|
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="bool" key="AutoTest.ApplyFilter">false</value>
|
||||||
|
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||||
|
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
|
||||||
|
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||||
|
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="ClangTools">
|
||||||
|
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||||
|
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||||
|
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||||
|
<value type="int" key="ClangTools.ParallelJobs">14</value>
|
||||||
|
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||||
|
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||||
|
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="DeviceType">Desktop</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.7.2 MinGW 64-bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.7.2 MinGW 64-bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.672.win64_mingw_kit</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<value type="QString" key="CMake.Build.Type">Debug</value>
|
||||||
|
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
|
||||||
|
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
|
||||||
|
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
|
||||||
|
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
|
||||||
|
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
|
||||||
|
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
|
||||||
|
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
|
||||||
|
-DCMAKE_BUILD_TYPE:STRING=Debug
|
||||||
|
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}</value>
|
||||||
|
<value type="int" key="EnableQmlDebugging">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\work\project\DiagramDesigner\DiagramDesigner\build\Desktop_Qt_6_7_2_MinGW_64_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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">all</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">clean</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<value type="QString" key="CMake.Build.Type">Release</value>
|
||||||
|
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
|
||||||
|
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
|
||||||
|
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
|
||||||
|
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
|
||||||
|
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
|
||||||
|
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
|
||||||
|
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
|
||||||
|
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||||
|
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\work\project\DiagramDesigner\DiagramDesigner\build\Desktop_Qt_6_7_2_MinGW_64_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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">all</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">clean</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
|
<value type="QString" key="CMake.Build.Type">Debug</value>
|
||||||
|
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
|
||||||
|
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
|
||||||
|
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
|
||||||
|
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
|
||||||
|
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
|
||||||
|
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
|
||||||
|
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
|
||||||
|
-DCMAKE_BUILD_TYPE:STRING=Debug
|
||||||
|
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}</value>
|
||||||
|
<value type="QString" key="CMake.Source.Directory">D:\work\project\DiagramDesigner\DiagramDesigner</value>
|
||||||
|
<value type="int" key="EnableQmlDebugging">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\work\project\DiagramDesigner\DiagramDesigner\build\Desktop_Qt_6_7_2_MinGW_64_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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">all</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.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.BuildPreset"></value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||||
|
<value type="QString">clean</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||||
|
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
|
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||||
|
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">DiagramDesigner</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.DiagramDesigner</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">DiagramDesigner</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/work/project/DiagramDesigner/DiagramDesigner/build/Desktop_Qt_6_7_2_MinGW_64_bit-Debug/x64/bin</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="qlonglong">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">22</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">22</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
#include <QtSwap>
|
#include <QtSwap>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
|
||||||
const double g_dGriaphicsScene_Width = 600;
|
const double g_dGriaphicsScene_Width = 800;
|
||||||
const double g_dGriaphicsScene_Height = 450;
|
const double g_dGriaphicsScene_Height = 600;
|
||||||
|
|
||||||
//Q_NAMESPACE
|
//Q_NAMESPACE
|
||||||
enum GraphicsItemType
|
enum GraphicsItemType
|
||||||
|
|
@ -22,7 +22,7 @@ enum GraphicsItemType
|
||||||
GIT_bus = QGraphicsItem::UserType + 50,
|
GIT_bus = QGraphicsItem::UserType + 50,
|
||||||
GIT_itemRect = QGraphicsItem::UserType + 51,
|
GIT_itemRect = QGraphicsItem::UserType + 51,
|
||||||
GIT_itemTri = QGraphicsItem::UserType + 52,
|
GIT_itemTri = QGraphicsItem::UserType + 52,
|
||||||
GIT_connectLine = QGraphicsItem::UserType + 53
|
GIT_link= QGraphicsItem::UserType + 53
|
||||||
};
|
};
|
||||||
//Q_ENUM_NS(GraphicsItemType)
|
//Q_ENUM_NS(GraphicsItemType)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,11 @@ struct Connection
|
||||||
int nSrcNodeId;
|
int nSrcNodeId;
|
||||||
int nSrcPort;
|
int nSrcPort;
|
||||||
HandleType srcType;
|
HandleType srcType;
|
||||||
|
PortPos srcPos;
|
||||||
int nDestNodeId;
|
int nDestNodeId;
|
||||||
int nDestPort;
|
int nDestPort;
|
||||||
HandleType destType;
|
HandleType destType;
|
||||||
|
PortPos destPos;
|
||||||
|
|
||||||
Connection()
|
Connection()
|
||||||
{
|
{
|
||||||
|
|
@ -19,19 +21,23 @@ struct Connection
|
||||||
nSrcNodeId = -1;
|
nSrcNodeId = -1;
|
||||||
nSrcPort = -1;
|
nSrcPort = -1;
|
||||||
srcType = T_none;
|
srcType = T_none;
|
||||||
|
srcPos = P_top;
|
||||||
nDestNodeId = -1;
|
nDestNodeId = -1;
|
||||||
nDestPort = -1;
|
nDestPort = -1;
|
||||||
destType = T_none;
|
destType = T_none;
|
||||||
|
destPos = P_top;
|
||||||
}
|
}
|
||||||
|
|
||||||
Connection(int nSNI,int nSP,HandleType sT,int nDNI,int nDP,HandleType dT)
|
Connection(int nSNI,int nSP,HandleType sT,PortPos sPOS,int nDNI,int nDP,HandleType dT,PortPos dPOS)
|
||||||
{
|
{
|
||||||
nSrcNodeId = nSNI;
|
nSrcNodeId = nSNI;
|
||||||
nSrcPort = nSP;
|
nSrcPort = nSP;
|
||||||
srcType = sT;
|
srcType = sT;
|
||||||
|
srcPos = sPOS;
|
||||||
nDestNodeId = nDNI;
|
nDestNodeId = nDNI;
|
||||||
nDestPort = nDP;
|
nDestPort = nDP;
|
||||||
destType = dT;
|
destType = dT;
|
||||||
|
destPos = dPOS;
|
||||||
}
|
}
|
||||||
bool operator==(Connection& obj)
|
bool operator==(Connection& obj)
|
||||||
{
|
{
|
||||||
|
|
@ -45,9 +51,11 @@ struct Connection
|
||||||
nSrcNodeId = obj.nSrcNodeId;
|
nSrcNodeId = obj.nSrcNodeId;
|
||||||
nSrcPort = obj.nSrcPort;
|
nSrcPort = obj.nSrcPort;
|
||||||
srcType = obj.srcType;
|
srcType = obj.srcType;
|
||||||
|
srcPos = obj.srcPos;
|
||||||
nDestNodeId = obj.nDestNodeId;
|
nDestNodeId = obj.nDestNodeId;
|
||||||
nDestPort = obj.nDestPort;
|
nDestPort = obj.nDestPort;
|
||||||
destType = obj.destType;
|
destType = obj.destType;
|
||||||
|
destPos = obj.destPos;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -58,23 +66,30 @@ public:
|
||||||
ElectricConnectLineItem(QGraphicsItem *parent = 0);
|
ElectricConnectLineItem(QGraphicsItem *parent = 0);
|
||||||
virtual ~ElectricConnectLineItem();
|
virtual ~ElectricConnectLineItem();
|
||||||
|
|
||||||
void setStartPoint(const QPointF& p){m_pStart = p;}
|
void setStartPoint(const QPointF& p);
|
||||||
void setEndPoint(const QPointF& p){m_pEnd = p;}
|
void setEndPoint(const QPointF& p);
|
||||||
QPainterPath getPoints(void) const { return m_points; }
|
QPainterPath getPoints(void) const { return m_points; }
|
||||||
|
|
||||||
|
void moveLine(QPointF); //鼠标点击拖动
|
||||||
void calculatePath();
|
void calculatePath();
|
||||||
bool addConnection();
|
bool addConnection();
|
||||||
|
void resetCurLine(){_curLine = QPoint();}
|
||||||
|
|
||||||
void updateConnection(int callerId,QPointF pos); //外部调用的更新函数,id为调用者id
|
void updateConnection(int callerId,QPointF pos); //外部调用的更新函数,id为调用者id
|
||||||
void setConnection(Connection con){m_connectState = con;}
|
void setConnection(Connection con){m_connectState = con;}
|
||||||
protected:
|
protected:
|
||||||
virtual QPainterPath shape();
|
virtual QPainterPath shape() const override;
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
virtual QRectF boundingRect() const override;
|
||||||
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
private:
|
private:
|
||||||
Connection m_connectState;
|
Connection m_connectState;
|
||||||
QPainterPath m_points;
|
QPainterPath m_points;
|
||||||
QPointF m_pStart;
|
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
||||||
QPointF m_pEnd;
|
QList<QPointF> m_lstPoints;
|
||||||
|
QPoint _curLine; //参数1用点序号表示的当前线段起始点,参数2表示线段方向
|
||||||
|
|
||||||
|
//QPointF m_pStart;
|
||||||
|
//QPointF m_pEnd;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QPen>
|
#include <QPen>
|
||||||
#include <QGraphicsSvgItem>
|
#include <QGraphicsSvgItem>
|
||||||
|
//#include "graphicsItem/itemPort.h"
|
||||||
|
|
||||||
enum ShapeType
|
enum ShapeType
|
||||||
{
|
{
|
||||||
|
|
@ -199,6 +199,21 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
virtual void setHandleIfShow(int tag,bool bVisible) //是否参与显示判断
|
||||||
|
{
|
||||||
|
foreach (int key, m_vecHanle.keys())
|
||||||
|
{
|
||||||
|
ItemControlHandle* pHandle = m_vecHanle.value(key);
|
||||||
|
if(pHandle)
|
||||||
|
{
|
||||||
|
if(pHandle->getTag() == tag)
|
||||||
|
{
|
||||||
|
pHandle->setIfShow(bVisible);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
virtual void setFunctionHandleIfShow(bool bVisible) //是否参与显示判断
|
virtual void setFunctionHandleIfShow(bool bVisible) //是否参与显示判断
|
||||||
{
|
{
|
||||||
foreach (int key, m_vecHanle.keys())
|
foreach (int key, m_vecHanle.keys())
|
||||||
|
|
@ -398,6 +413,7 @@ public:
|
||||||
virtual void syncRotationDataFromParent(const double&) {}
|
virtual void syncRotationDataFromParent(const double&) {}
|
||||||
virtual double getSyncRotationDataFromParent() {return m_dSyncRotationByParent;}
|
virtual double getSyncRotationDataFromParent() {return m_dSyncRotationByParent;}
|
||||||
virtual void setTouched(bool b){m_touched = b;}
|
virtual void setTouched(bool b){m_touched = b;}
|
||||||
|
virtual void setLastPoint(QPointF p) {m_lastPoint = p;}
|
||||||
protected:
|
protected:
|
||||||
ShapeType m_type;
|
ShapeType m_type;
|
||||||
QPen m_pen;
|
QPen m_pen;
|
||||||
|
|
@ -412,7 +428,7 @@ protected:
|
||||||
|
|
||||||
QGraphicsPathItem* m_pOperationCopy; //图元移动和旋转时的操作副本
|
QGraphicsPathItem* m_pOperationCopy; //图元移动和旋转时的操作副本
|
||||||
QPointF m_movingIniPos; //移动副本开始移动初始
|
QPointF m_movingIniPos; //移动副本开始移动初始
|
||||||
|
QPointF m_lastPoint; //鼠标上次点击位置
|
||||||
|
|
||||||
QMap<int,ItemControlHandle*> m_vecHanle;
|
QMap<int,ItemControlHandle*> m_vecHanle;
|
||||||
};
|
};
|
||||||
|
|
@ -451,6 +467,7 @@ public:
|
||||||
virtual void setLastPort(int n){_lastPort = n;}
|
virtual void setLastPort(int n){_lastPort = n;}
|
||||||
virtual int getLastPort() const {return _lastPort;}
|
virtual int getLastPort() const {return _lastPort;}
|
||||||
virtual ItemPort* getPortPtr(int) const;
|
virtual ItemPort* getPortPtr(int) const;
|
||||||
|
virtual ItemControlHandle* getHandlePtr(int) const;
|
||||||
virtual QMap<QString,ItemPort*>& getPorts() {return m_mapPort;}
|
virtual QMap<QString,ItemPort*>& getPorts() {return m_mapPort;}
|
||||||
protected:
|
protected:
|
||||||
virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange, const QVariant&);
|
virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange, const QVariant&);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef HANDLERECT_H
|
||||||
|
#define HANDLERECT_H
|
||||||
|
|
||||||
|
#include "graphicsItem/itemControlHandle.h"
|
||||||
|
|
||||||
|
class HandleRect : public ItemControlHandle
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
HandleRect(QGraphicsItem *parent);
|
||||||
|
virtual ~HandleRect();
|
||||||
|
protected:
|
||||||
|
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*) override;
|
||||||
|
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*) override;
|
||||||
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
|
virtual QRectF boundingRect() const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
#ifndef HANDLETEXT_H
|
||||||
|
#define HANDLETEXT_H
|
||||||
|
|
||||||
|
#include <QFont>
|
||||||
|
#include "graphicsItem/itemControlHandle.h"
|
||||||
|
|
||||||
|
int const TEXT_WIDTH = 30;
|
||||||
|
int const TEXT_HEIGHT = 15;
|
||||||
|
|
||||||
|
class QGraphicsProxyWidget;
|
||||||
|
|
||||||
|
class HandleText : public ItemControlHandle
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
HandleText(QGraphicsItem *parent);
|
||||||
|
virtual ~HandleText();
|
||||||
|
|
||||||
|
void setText(QString);
|
||||||
|
void creatEditor(); //创建editor编辑文本
|
||||||
|
void setEditable(bool b){_editable = b;}
|
||||||
|
protected:
|
||||||
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
|
virtual QRectF boundingRect() const override;
|
||||||
|
private:
|
||||||
|
QString _text;
|
||||||
|
QFont _font;
|
||||||
|
QRectF _boundingRect;
|
||||||
|
QGraphicsProxyWidget* _proxy;
|
||||||
|
bool _editable;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -9,6 +9,7 @@ enum HandleType
|
||||||
T_resize, //调整大小
|
T_resize, //调整大小
|
||||||
T_rotate, //旋转
|
T_rotate, //旋转
|
||||||
T_editShape, //编辑形状
|
T_editShape, //编辑形状
|
||||||
|
T_text, //文本
|
||||||
T_lineIn, //入线口
|
T_lineIn, //入线口
|
||||||
T_lineOut, //出线口
|
T_lineOut, //出线口
|
||||||
T_lineInOut //双端线
|
T_lineInOut //双端线
|
||||||
|
|
@ -30,6 +31,7 @@ enum HandleTag
|
||||||
H_rotate_rightBottom,
|
H_rotate_rightBottom,
|
||||||
H_rotate_leftBottom, //12
|
H_rotate_leftBottom, //12
|
||||||
H_edit,
|
H_edit,
|
||||||
|
H_textCaption = 40, //标题文本
|
||||||
H_connect = 50 //连接操作点从50开始,前面预留
|
H_connect = 50 //连接操作点从50开始,前面预留
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -43,7 +45,9 @@ enum PortPos
|
||||||
|
|
||||||
const int HNDLE_SIZE = 8;
|
const int HNDLE_SIZE = 8;
|
||||||
|
|
||||||
class ItemControlHandle : public QObject,public QGraphicsRectItem
|
class GraphicsBaseItem;
|
||||||
|
|
||||||
|
class ItemControlHandle : public QObject,public QGraphicsItem
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
@ -52,30 +56,33 @@ public:
|
||||||
virtual ~ItemControlHandle();
|
virtual ~ItemControlHandle();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
virtual int getSize();
|
||||||
|
virtual void move(double, double);
|
||||||
|
|
||||||
void setType(HandleType ht) { m_type = ht; }
|
void setType(HandleType ht) { m_type = ht; }
|
||||||
HandleType getType() { return m_type; }
|
HandleType getType() { return m_type; }
|
||||||
|
|
||||||
void setTag(int ht) { m_tag = ht; }
|
void setTag(int ht) { m_tag = ht; }
|
||||||
int getTag() { return m_tag; }
|
int getTag() { return m_tag; }
|
||||||
|
|
||||||
int getSize();
|
|
||||||
void move(double, double);
|
|
||||||
|
|
||||||
void setEnable(bool b){m_enable = b;}
|
void setEnable(bool b){m_enable = b;}
|
||||||
bool enable(){return m_enable;}
|
bool enable(){return m_enable;}
|
||||||
|
|
||||||
void setIfShow(bool b){m_ifShow = b;}
|
void setIfShow(bool b){m_ifShow = b;}
|
||||||
bool ifShow(){return m_ifShow;}
|
bool ifShow(){return m_ifShow;}
|
||||||
|
|
||||||
|
GraphicsBaseItem* getParentPtr() const {return _parent;}
|
||||||
|
void setParent(GraphicsBaseItem* p) {_parent = p;}
|
||||||
protected:
|
protected:
|
||||||
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*) override;
|
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*) override;
|
||||||
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*) override;
|
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*) override;
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HandleType m_type;
|
HandleType m_type;
|
||||||
int m_tag;
|
int m_tag;
|
||||||
bool m_enable;
|
bool m_enable;
|
||||||
bool m_ifShow;
|
bool m_ifShow;
|
||||||
|
GraphicsBaseItem* _parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
#ifndef ITEMPORT_H
|
#ifndef ITEMPORT_H
|
||||||
#define ITEMPORT_H
|
#define ITEMPORT_H
|
||||||
|
|
||||||
#include "graphicsItem/itemControlHandle.h"
|
#include "graphicsItem/handleRect.h"
|
||||||
|
|
||||||
class ElectricConnectLineItem;
|
class ElectricConnectLineItem;
|
||||||
|
|
||||||
class ItemPort : public ItemControlHandle
|
class ItemPort : public HandleRect
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ enum SelectorType
|
||||||
ST_scaling, //缩放
|
ST_scaling, //缩放
|
||||||
ST_rotation, //旋转
|
ST_rotation, //旋转
|
||||||
ST_connecting, //连接
|
ST_connecting, //连接
|
||||||
|
ST_subMoving, //子对象移动
|
||||||
|
ST_linkMoving, //连接线移动
|
||||||
};
|
};
|
||||||
|
|
||||||
enum OperationMode
|
enum OperationMode
|
||||||
|
|
@ -32,6 +34,8 @@ enum OperationMode
|
||||||
OM_scale, //缩放
|
OM_scale, //缩放
|
||||||
OM_rotate, //旋转
|
OM_rotate, //旋转
|
||||||
OM_connect, //连接
|
OM_connect, //连接
|
||||||
|
OM_subMove,//子对象移动
|
||||||
|
OM_linkMove, //连接线移动
|
||||||
};
|
};
|
||||||
|
|
||||||
class GraphicsBaseItem;
|
class GraphicsBaseItem;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
/**
|
||||||
|
*\file linkMovingSelector.h
|
||||||
|
*
|
||||||
|
*\brief 实现连接线移动的selector,与移动movingSelector作区分
|
||||||
|
*
|
||||||
|
*\author by
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LINKMOVINGSELECTOR_H
|
||||||
|
#define LINKMOVINGSELECTOR_H
|
||||||
|
|
||||||
|
#include "baseSelector.h"
|
||||||
|
|
||||||
|
class ElectricConnectLineItem;
|
||||||
|
|
||||||
|
class LinkMovingSelector : public BaseSelector
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit LinkMovingSelector(QObject *parent = 0);
|
||||||
|
virtual ~LinkMovingSelector();
|
||||||
|
public:
|
||||||
|
void mousePressEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
|
||||||
|
void mouseMoveEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
|
||||||
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
|
||||||
|
private:
|
||||||
|
ElectricConnectLineItem* m_pMovingLine;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
/**
|
||||||
|
*\file subMovingSelector.h
|
||||||
|
*
|
||||||
|
*\brief 实现子类图元移动的selector,与移动movingSelector作区分
|
||||||
|
*
|
||||||
|
*\author by
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SUBMOVINGSELECTOR_H
|
||||||
|
#define SUBMOVINGSELECTOR_H
|
||||||
|
|
||||||
|
#include "baseSelector.h"
|
||||||
|
|
||||||
|
class SubMovingSelector : public BaseSelector
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit SubMovingSelector(QObject *parent = 0);
|
||||||
|
virtual ~SubMovingSelector();
|
||||||
|
public:
|
||||||
|
void mousePressEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
|
||||||
|
void mouseMoveEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
|
||||||
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
|
||||||
|
private:
|
||||||
|
GraphicsBaseItem* m_pParentItem;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -109,7 +109,7 @@ void DesignerScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* mouseEvent)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
QGraphicsScene::mouseReleaseEvent(mouseEvent);
|
QGraphicsScene::mouseDoubleClickEvent(mouseEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesignerScene::keyPressEvent(QKeyEvent* event)
|
void DesignerScene::keyPressEvent(QKeyEvent* event)
|
||||||
|
|
|
||||||
|
|
@ -1,52 +1,384 @@
|
||||||
#include "graphicsItem/electricConnectLineItem.h"
|
#include "graphicsItem/electricConnectLineItem.h"
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QStyleOptionGraphicsItem>
|
||||||
|
|
||||||
|
|
||||||
ElectricConnectLineItem::ElectricConnectLineItem(QGraphicsItem *parent)
|
ElectricConnectLineItem::ElectricConnectLineItem(QGraphicsItem *parent)
|
||||||
: GraphicsBaseItem(parent)
|
: GraphicsBaseItem(parent)
|
||||||
{
|
{
|
||||||
|
m_boundingRect = QRectF();
|
||||||
m_pen = QPen(Qt::black);
|
m_pen = QPen(Qt::black);
|
||||||
m_brush = QBrush(Qt::NoBrush);
|
m_brush = QBrush(Qt::NoBrush);
|
||||||
setHandleVisible(false);
|
setHandleVisible(false);
|
||||||
setFunctionHandleIfShow(false);
|
setFunctionHandleIfShow(false);
|
||||||
setFunctionHandleEnaable(false);
|
setFunctionHandleEnaable(false);
|
||||||
|
m_lstPoints.push_back(QPointF()); //起点
|
||||||
|
m_lstPoints.push_back(QPointF()); //终点
|
||||||
|
_curLine = QPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
ElectricConnectLineItem::~ElectricConnectLineItem()
|
ElectricConnectLineItem::~ElectricConnectLineItem()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QPainterPath ElectricConnectLineItem::shape()
|
void ElectricConnectLineItem::setStartPoint(const QPointF& p)
|
||||||
|
{
|
||||||
|
int n = m_lstPoints.size();
|
||||||
|
if(n)
|
||||||
|
{
|
||||||
|
if(n >2)
|
||||||
|
{
|
||||||
|
if(m_lstPoints[0].x() == m_lstPoints[1].x()) //相邻点在垂直方向,水平移动,否则垂直移动
|
||||||
|
{
|
||||||
|
m_lstPoints[1].setX(p.x());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_lstPoints[1].setY(p.y());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_lstPoints[0] = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void ElectricConnectLineItem::setEndPoint(const QPointF& p)
|
||||||
|
{
|
||||||
|
int n = m_lstPoints.size();
|
||||||
|
if(n)
|
||||||
|
{
|
||||||
|
if(n >2)
|
||||||
|
{
|
||||||
|
if(m_lstPoints[n-1].x() == m_lstPoints[n-2].x()) //相邻点在垂直方向,水平移动,否则垂直移动
|
||||||
|
{
|
||||||
|
m_lstPoints[n-2].setX(p.x());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_lstPoints[n-2].setY(p.y());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_lstPoints[n-1] = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QPainterPath ElectricConnectLineItem::shape() const
|
||||||
{
|
{
|
||||||
QPainterPath path;
|
QPainterPath path;
|
||||||
path.addPath(m_points);
|
//path.addPath(m_points);
|
||||||
path.closeSubpath(); //将路径闭合
|
path.addPath(m_pointsBoundingRect);
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QRectF ElectricConnectLineItem::boundingRect() const
|
||||||
|
{
|
||||||
|
return m_boundingRect;
|
||||||
|
}
|
||||||
|
|
||||||
void ElectricConnectLineItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
void ElectricConnectLineItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||||
{
|
{
|
||||||
painter->setPen(m_pen);
|
if (option->state & QStyle::State_Selected)
|
||||||
|
{
|
||||||
|
painter->setPen(Qt::red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
painter->setPen(m_pen);
|
||||||
|
}
|
||||||
|
|
||||||
painter->setBrush(m_brush);
|
painter->setBrush(m_brush);
|
||||||
|
|
||||||
painter->drawPath(m_points);
|
painter->drawPath(m_points);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ElectricConnectLineItem::moveLine(QPointF pos)
|
||||||
|
{
|
||||||
|
QPointF delta = pos - m_lastPoint;
|
||||||
|
if(_curLine.isNull())
|
||||||
|
{
|
||||||
|
if(m_lstPoints.size() > 1)
|
||||||
|
{
|
||||||
|
int n = m_lstPoints.size();
|
||||||
|
for(int i = 0;i < m_lstPoints.size() -1;++i)
|
||||||
|
{
|
||||||
|
QPointF p1 = m_lstPoints[i];
|
||||||
|
QPointF p2 = m_lstPoints[i+1];
|
||||||
|
|
||||||
|
if(p1.x() == p2.x() && abs(p1.x() - pos.x()) < 2) //在相同竖线
|
||||||
|
{
|
||||||
|
if(p1.y() > p2.y())
|
||||||
|
{
|
||||||
|
if(pos.y() > p2.y() && pos.y() < p1.y()) //在竖线上
|
||||||
|
{
|
||||||
|
|
||||||
|
if(i == 0 ) //起点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
|
||||||
|
i+=2;
|
||||||
|
if(m_lstPoints.size() < 6) //补齐后端
|
||||||
|
{
|
||||||
|
m_lstPoints.append(m_lstPoints.last());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i+1 == n-1) //终点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
|
||||||
|
m_lstPoints[i+1] = p2;
|
||||||
|
if(m_lstPoints.size() < 6) //补齐前端,移动后至少6个点
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(m_lstPoints.first());
|
||||||
|
i+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//qDebug() << 1 <<" "<<i;
|
||||||
|
_curLine = QPoint(i,1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(p1.y() < p2.y())
|
||||||
|
{
|
||||||
|
if(pos.y() < p2.y() && pos.y() > p1.y()) //在竖线上
|
||||||
|
{
|
||||||
|
|
||||||
|
if(i == 0) //起点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
i+=2;
|
||||||
|
if(m_lstPoints.size() < 6) //补齐后端
|
||||||
|
{
|
||||||
|
m_lstPoints.append(m_lstPoints.last());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i+1 == n-1) //终点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
|
||||||
|
m_lstPoints[i+1] = p2;
|
||||||
|
if(m_lstPoints.size() < 6) //补齐前端
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(m_lstPoints.first());
|
||||||
|
i+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//qDebug() << 2 <<" "<<i;
|
||||||
|
_curLine = QPoint(i,1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(p1.y() == p2.y() && abs(p1.y() - pos.y()) < 2) //在相同横线
|
||||||
|
{
|
||||||
|
if(p1.x() > p2.x())
|
||||||
|
{
|
||||||
|
if(pos.x() > p2.x() && pos.x() < p1.x())
|
||||||
|
{
|
||||||
|
|
||||||
|
if(i == 0) //起点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
|
||||||
|
i+=2;
|
||||||
|
if(m_lstPoints.size() < 6) //补齐后端
|
||||||
|
{
|
||||||
|
m_lstPoints.append(m_lstPoints.last());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i+1 == n-1) //终点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
|
||||||
|
if(m_lstPoints.size() < 6) //补齐前端,移动后至少6个点
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(m_lstPoints.first());
|
||||||
|
i+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//qDebug() << 3 <<" "<<i;
|
||||||
|
_curLine = QPoint(i,-1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(p1.x() < p2.x())
|
||||||
|
{
|
||||||
|
if(pos.x() < p2.x() && pos.x() > p1.x())
|
||||||
|
{
|
||||||
|
|
||||||
|
if(i == 0) //起点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
m_lstPoints.prepend(p1);
|
||||||
|
|
||||||
|
i+=2;
|
||||||
|
m_lstPoints[i] = p1;
|
||||||
|
if(m_lstPoints.size() < 6) //补齐后端
|
||||||
|
{
|
||||||
|
m_lstPoints.append(m_lstPoints.last());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i+1 == n-1) //终点是连接点,创建复制点
|
||||||
|
{
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
m_lstPoints.append(p2);
|
||||||
|
|
||||||
|
if(m_lstPoints.size() < 6) //补齐前端
|
||||||
|
{
|
||||||
|
m_lstPoints.prepend(m_lstPoints.first());
|
||||||
|
i+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//qDebug() << 4 <<" "<<i;
|
||||||
|
_curLine = QPoint(i,-1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int n = _curLine.x();
|
||||||
|
//qDebug() << n <<" "<<_curLine.y();
|
||||||
|
//if(m_lstPoints.size() > 3)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(_curLine.y() == 1) //竖线
|
||||||
|
{
|
||||||
|
if(n == 0) //起点是原点
|
||||||
|
{
|
||||||
|
QPointF p(0,delta.y()); //原点不动
|
||||||
|
m_lstPoints[n +1] = m_lstPoints[n +1] + p; //第二个点只竖直移动
|
||||||
|
m_lstPoints[n +2] = m_lstPoints[n +2] + p; //第三个点只竖直移动
|
||||||
|
}
|
||||||
|
else if(n == 1)
|
||||||
|
{
|
||||||
|
QPointF p(delta.x(),0);
|
||||||
|
m_lstPoints[n] += p; //第一个点只水平移动
|
||||||
|
m_lstPoints[n +1] += p; //第二个点只水平移动
|
||||||
|
}
|
||||||
|
else if(n == m_lstPoints.size()-2) //起点是倒数第二个点
|
||||||
|
{
|
||||||
|
QPointF p(0,delta.y());
|
||||||
|
m_lstPoints[n] += p; //起点只上下移动
|
||||||
|
m_lstPoints[n-1] += p; //上个点只竖直移动
|
||||||
|
}
|
||||||
|
else if(n == m_lstPoints.size()-3) //起点是倒数第三个点
|
||||||
|
{
|
||||||
|
QPointF py(0,delta.y());
|
||||||
|
QPointF px(delta.x(),0);
|
||||||
|
m_lstPoints[n-1] += py; //上个点只垂直移动
|
||||||
|
m_lstPoints[n] += delta; //起点任意动
|
||||||
|
m_lstPoints[n+1] += px; //第二个点只水平移动
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_lstPoints[n -1].setY(m_lstPoints[n ].y());
|
||||||
|
m_lstPoints[n] += delta;
|
||||||
|
m_lstPoints[n +1] += delta;
|
||||||
|
m_lstPoints[n +2].setY(m_lstPoints[n +1].y());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //横线
|
||||||
|
{
|
||||||
|
if(n == 0) //起点是原点
|
||||||
|
{
|
||||||
|
QPointF p(delta.x(),0); //原点不动
|
||||||
|
m_lstPoints[n +1] = m_lstPoints[n +1] + p; //第二个点只水平移动
|
||||||
|
m_lstPoints[n +2] = m_lstPoints[n +2] + p; //第三个点只水平移动
|
||||||
|
}
|
||||||
|
else if(n == 1)
|
||||||
|
{
|
||||||
|
QPointF p(0,delta.y());
|
||||||
|
m_lstPoints[n] = m_lstPoints[n] + p; //第一个点只竖直移动
|
||||||
|
m_lstPoints[n +1] = m_lstPoints[n +1] + p; //第二个点只竖直移动
|
||||||
|
}
|
||||||
|
else if(n == m_lstPoints.size()-2) //起点是倒数第二个点
|
||||||
|
{
|
||||||
|
QPointF p(delta.x(),0);
|
||||||
|
m_lstPoints[n] += p; //起点水平移动
|
||||||
|
m_lstPoints[n-1] += p; //上个点只水平移动
|
||||||
|
}
|
||||||
|
else if(n == m_lstPoints.size()-3) //起点是倒数第三个点
|
||||||
|
{
|
||||||
|
QPointF py(0,delta.y());
|
||||||
|
QPointF px(delta.x(),0);
|
||||||
|
m_lstPoints[n-1] += px; //上个点只水平移动
|
||||||
|
m_lstPoints[n] += delta; //起点任意动
|
||||||
|
m_lstPoints[n+1] += py; //第二个点只上下移动
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_lstPoints[n -1].setX(m_lstPoints[n].x());
|
||||||
|
m_lstPoints[n] += delta;
|
||||||
|
m_lstPoints[n +1] += delta;
|
||||||
|
m_lstPoints[n +2].setX(m_lstPoints[n +1].x());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calculatePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_lastPoint = pos;
|
||||||
|
}
|
||||||
|
|
||||||
void ElectricConnectLineItem::calculatePath()
|
void ElectricConnectLineItem::calculatePath()
|
||||||
{
|
{
|
||||||
|
int n = m_lstPoints.size();
|
||||||
|
/*for(int i = 0;i < n-1;++i)
|
||||||
|
{
|
||||||
|
if(m_lstPoints[i] == m_lstPoints[i+1])
|
||||||
|
{
|
||||||
|
if(i == 0) //头重复去除一个
|
||||||
|
{
|
||||||
|
m_lstPoints.removeAt(i+1);
|
||||||
|
}
|
||||||
|
else if((i+1 == n-1)) //尾重复去除一个
|
||||||
|
{
|
||||||
|
m_lstPoints.removeAt(i+1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_lstPoints.removeAt(i+1);
|
||||||
|
m_lstPoints.removeAt(i);
|
||||||
|
}
|
||||||
|
qDebug()<<"reset";
|
||||||
|
resetCurLine();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
m_points.clear();
|
m_points.clear();
|
||||||
|
m_pointsBoundingRect.clear();
|
||||||
|
|
||||||
m_points.moveTo(m_pStart);
|
if(m_lstPoints.size() == 2 && (m_lstPoints.first().x() != m_lstPoints.last().x()) && (m_lstPoints.first().y() != m_lstPoints.last().y()))
|
||||||
m_points.lineTo(m_pEnd.x(),m_pStart.y());
|
{
|
||||||
m_points.lineTo(m_pEnd);
|
if(m_lstPoints.first().y() < m_lstPoints.last().y())
|
||||||
|
m_lstPoints.insert(1,QPointF(m_lstPoints.first().x(),m_lstPoints.last().y()));
|
||||||
|
else
|
||||||
|
m_lstPoints.insert(1,QPointF(m_lstPoints.last().x(),m_lstPoints.first().y()));
|
||||||
|
}
|
||||||
|
m_points.moveTo(m_lstPoints.first());
|
||||||
|
QPointF pLast = m_lstPoints.first();
|
||||||
|
for(int i = 1;i <m_lstPoints.size();++i)
|
||||||
|
{
|
||||||
|
m_points.lineTo(m_lstPoints[i]);
|
||||||
|
m_pointsBoundingRect.addRect(QRectF(QPointF(pLast.x()-1,pLast.y()-1),QPointF(m_lstPoints[i].x()+1,m_lstPoints[i].y()+1)));
|
||||||
|
pLast = m_lstPoints[i];
|
||||||
|
}
|
||||||
|
m_boundingRect = m_points.boundingRect();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ElectricConnectLineItem::updateConnection(int callerId,QPointF pos)
|
void ElectricConnectLineItem::updateConnection(int callerId,QPointF pos)
|
||||||
{
|
{
|
||||||
qDebug()<<pos;
|
//qDebug()<<pos;
|
||||||
if(callerId == m_connectState.nSrcNodeId)
|
if(callerId == m_connectState.nSrcNodeId)
|
||||||
setStartPoint(pos);
|
setStartPoint(pos);
|
||||||
else if(callerId == m_connectState.nDestNodeId)
|
else if(callerId == m_connectState.nDestNodeId)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ ElectricSvgItemBus::ElectricSvgItemBus(const QRect &rect, QGraphicsItem *parent)
|
||||||
: ElectricSvgItem(rect,parent)
|
: ElectricSvgItem(rect,parent)
|
||||||
{
|
{
|
||||||
loadSvg(":/images/element/svg_bus.svg");
|
loadSvg(":/images/element/svg_bus.svg");
|
||||||
|
setHandleIfShow(H_textCaption,false);
|
||||||
setHandleVisible(false);
|
setHandleVisible(false);
|
||||||
setFunctionHandleIfShow(false);
|
setFunctionHandleIfShow(false);
|
||||||
setFunctionHandleEnaable(false);
|
setFunctionHandleEnaable(false);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ ElectricSvgItemRect::ElectricSvgItemRect(const QRect &rect, QGraphicsItem *paren
|
||||||
: ElectricSvgItem(rect,parent)
|
: ElectricSvgItem(rect,parent)
|
||||||
{
|
{
|
||||||
loadSvg(":/images/element/svg_rect.svg");
|
loadSvg(":/images/element/svg_rect.svg");
|
||||||
|
setHandleIfShow(H_textCaption,false);
|
||||||
setHandleVisible(false);
|
setHandleVisible(false);
|
||||||
setFunctionHandleIfShow(false);
|
setFunctionHandleIfShow(false);
|
||||||
setFunctionHandleEnaable(false);
|
setFunctionHandleEnaable(false);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ ElectricSvgItemTriangle::ElectricSvgItemTriangle(const QRect &rect, QGraphicsIte
|
||||||
: ElectricSvgItem(rect,parent)
|
: ElectricSvgItem(rect,parent)
|
||||||
{
|
{
|
||||||
loadSvg(":/images/element/svg_triangle.svg");
|
loadSvg(":/images/element/svg_triangle.svg");
|
||||||
|
setHandleIfShow(H_textCaption,false);
|
||||||
setHandleVisible(false);
|
setHandleVisible(false);
|
||||||
setFunctionHandleIfShow(false);
|
setFunctionHandleIfShow(false);
|
||||||
setFunctionHandleEnaable(false);
|
setFunctionHandleEnaable(false);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
#include "graphicsItem/graphicsBaseItem.h"
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
#include "graphicsItem/handleRect.h"
|
||||||
|
#include "graphicsItem/handleText.h"
|
||||||
#include "graphicsItem/itemPort.h"
|
#include "graphicsItem/itemPort.h"
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
|
|
||||||
|
|
@ -13,19 +15,27 @@ GraphicsBaseItem::GraphicsBaseItem(QGraphicsItem *parent)
|
||||||
//m_vecHanle.reserve(H_left);
|
//m_vecHanle.reserve(H_left);
|
||||||
for(int i = H_leftTop; i <= H_left; i++)
|
for(int i = H_leftTop; i <= H_left; i++)
|
||||||
{
|
{
|
||||||
ItemControlHandle* pHandle = new ItemControlHandle(this);
|
ItemControlHandle* pHandle = new HandleRect(this);
|
||||||
pHandle->setType(T_resize);
|
pHandle->setType(T_resize);
|
||||||
pHandle->setTag(i);
|
pHandle->setTag(i);
|
||||||
m_vecHanle.insert(i-1,pHandle);
|
m_vecHanle.insert(i-1,pHandle);
|
||||||
}
|
}
|
||||||
for(int i = H_rotate_leftTop; i <= H_rotate_leftBottom; i++)
|
for(int i = H_rotate_leftTop; i <= H_rotate_leftBottom; i++)
|
||||||
{
|
{
|
||||||
ItemControlHandle* pHandle = new ItemControlHandle(this);
|
ItemControlHandle* pHandle = new HandleRect(this);
|
||||||
pHandle->setType(T_rotate);
|
pHandle->setType(T_rotate);
|
||||||
pHandle->setTag(i);
|
pHandle->setTag(i);
|
||||||
m_vecHanle.insert(i-1,pHandle);
|
m_vecHanle.insert(i-1,pHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HandleText* pHandle = new HandleText(this);
|
||||||
|
pHandle->setType(T_text);
|
||||||
|
pHandle->setTag(H_textCaption);
|
||||||
|
pHandle->setText(QString::number(123456));
|
||||||
|
pHandle->setPos(30,-20);
|
||||||
|
pHandle->setParent(this);
|
||||||
|
m_vecHanle.insert(H_textCaption,pHandle);
|
||||||
|
|
||||||
setFlag(QGraphicsItem::ItemIsMovable, true);
|
setFlag(QGraphicsItem::ItemIsMovable, true);
|
||||||
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
||||||
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||||
|
|
@ -163,3 +173,14 @@ ItemPort* GraphicsBaseItem::getPortPtr(int n) const
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemControlHandle* GraphicsBaseItem::getHandlePtr(int n) const
|
||||||
|
{
|
||||||
|
for(auto iter:m_vecHanle)
|
||||||
|
{
|
||||||
|
int tag = iter->getTag();
|
||||||
|
if(tag == n)
|
||||||
|
return iter;
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include "graphicsItem/graphicsItemGroup.h"
|
#include "graphicsItem/graphicsItemGroup.h"
|
||||||
|
#include "graphicsItem/handleRect.h"
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QStyleOption>
|
#include <QStyleOption>
|
||||||
|
|
@ -17,14 +18,14 @@ GraphicsItemGroup::GraphicsItemGroup(QGraphicsItem *parent)
|
||||||
//m_vecHanle.reserve(H_left);
|
//m_vecHanle.reserve(H_left);
|
||||||
for(int i = H_leftTop; i <= H_left; i++)
|
for(int i = H_leftTop; i <= H_left; i++)
|
||||||
{
|
{
|
||||||
ItemControlHandle* pHandle = new ItemControlHandle(this);
|
ItemControlHandle* pHandle = new HandleRect(this);
|
||||||
pHandle->setType(T_resize);
|
pHandle->setType(T_resize);
|
||||||
pHandle->setTag(i);
|
pHandle->setTag(i);
|
||||||
m_vecHanle.insert(i-1,pHandle);
|
m_vecHanle.insert(i-1,pHandle);
|
||||||
}
|
}
|
||||||
for(int i = H_rotate_leftTop; i <= H_rotate_leftBottom; i++)
|
for(int i = H_rotate_leftTop; i <= H_rotate_leftBottom; i++)
|
||||||
{
|
{
|
||||||
ItemControlHandle* pHandle = new ItemControlHandle(this);
|
ItemControlHandle* pHandle = new HandleRect(this);
|
||||||
pHandle->setType(T_rotate);
|
pHandle->setType(T_rotate);
|
||||||
pHandle->setTag(i);
|
pHandle->setTag(i);
|
||||||
m_vecHanle.insert(i-1,pHandle);
|
m_vecHanle.insert(i-1,pHandle);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "graphicsItem/graphicsPolygonItem.h"
|
#include "graphicsItem/graphicsPolygonItem.h"
|
||||||
#include "graphicsItem/itemControlHandle.h"
|
//#include "graphicsItem/itemControlHandle.h"
|
||||||
|
#include "graphicsItem/handleRect.h"
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QStyleOption>
|
#include <QStyleOption>
|
||||||
|
|
||||||
|
|
@ -138,7 +138,7 @@ void GraphicPolygonItem::addPoint(const QPointF& point)
|
||||||
m_points.append(mapFromScene(point));
|
m_points.append(mapFromScene(point));
|
||||||
int nCount = m_points.count();
|
int nCount = m_points.count();
|
||||||
//每个顶点都可以编辑,所以一个顶点需要编辑handle
|
//每个顶点都可以编辑,所以一个顶点需要编辑handle
|
||||||
ItemControlHandle* pHandle = new ItemControlHandle(this);
|
ItemControlHandle* pHandle = new HandleRect(this);
|
||||||
pHandle->setType(T_editShape);
|
pHandle->setType(T_editShape);
|
||||||
pHandle->setTag(H_edit + nCount - 1);
|
pHandle->setTag(H_edit + nCount - 1);
|
||||||
m_vecHanle.insert(H_edit + nCount - 1,pHandle);
|
m_vecHanle.insert(H_edit + nCount - 1,pHandle);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "graphicsItem/graphicsRectItem.h"
|
#include "graphicsItem/graphicsRectItem.h"
|
||||||
#include "graphicsItem/itemControlHandle.h"
|
//#include "graphicsItem/itemControlHandle.h"
|
||||||
|
#include "graphicsItem/handleRect.h"
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QStyleOption>
|
#include <QStyleOption>
|
||||||
|
|
||||||
|
|
@ -17,12 +17,12 @@ GraphicsRectItem::GraphicsRectItem(const QRect &rect, bool isRound, QGraphicsIte
|
||||||
if (m_bIsRound) //圆角矩形添加两个圆角大小控制点
|
if (m_bIsRound) //圆角矩形添加两个圆角大小控制点
|
||||||
{
|
{
|
||||||
//横轴X控制点
|
//横轴X控制点
|
||||||
ItemControlHandle* pHandle1 = new ItemControlHandle(this);
|
ItemControlHandle* pHandle1 = new HandleRect(this);
|
||||||
pHandle1->setType(T_editShape);
|
pHandle1->setType(T_editShape);
|
||||||
pHandle1->setTag(H_edit);
|
pHandle1->setTag(H_edit);
|
||||||
m_vecHanle.insert(H_edit,pHandle1);
|
m_vecHanle.insert(H_edit,pHandle1);
|
||||||
//纵轴Y控制点
|
//纵轴Y控制点
|
||||||
ItemControlHandle* pHandle2 = new ItemControlHandle(this);
|
ItemControlHandle* pHandle2 = new HandleRect(this);
|
||||||
pHandle2->setType(T_editShape);
|
pHandle2->setType(T_editShape);
|
||||||
pHandle2->setTag(H_edit+1);
|
pHandle2->setTag(H_edit+1);
|
||||||
m_vecHanle.insert(H_edit+1,pHandle2);
|
m_vecHanle.insert(H_edit+1,pHandle2);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
#include "graphicsItem/handleRect.h"
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
|
HandleRect::HandleRect(QGraphicsItem *parent)
|
||||||
|
:ItemControlHandle(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
HandleRect::~HandleRect()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF HandleRect::boundingRect() const
|
||||||
|
{
|
||||||
|
// 设置边界矩形,这里我们返回一个从(10,10)开始,宽度为100,高度为50的矩形
|
||||||
|
return QRectF(-HNDLE_SIZE / 2,
|
||||||
|
-HNDLE_SIZE / 2,
|
||||||
|
HNDLE_SIZE,
|
||||||
|
HNDLE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleRect::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||||
|
{
|
||||||
|
Q_UNUSED(option)
|
||||||
|
Q_UNUSED(widget)
|
||||||
|
|
||||||
|
painter->setPen(Qt::SolidLine);
|
||||||
|
painter->setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
|
||||||
|
if(m_type==T_resize)
|
||||||
|
{
|
||||||
|
painter->setBrush(Qt::white);
|
||||||
|
painter->drawRect(boundingRect());
|
||||||
|
}
|
||||||
|
else if(m_type==T_rotate)
|
||||||
|
{
|
||||||
|
painter->setPen(Qt::NoPen);
|
||||||
|
painter->setBrush(Qt::NoBrush);
|
||||||
|
painter->drawRect(boundingRect());
|
||||||
|
}
|
||||||
|
else if(m_type==T_editShape)
|
||||||
|
{
|
||||||
|
painter->setBrush(Qt::green);
|
||||||
|
painter->drawEllipse(boundingRect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
||||||
|
}
|
||||||
|
else if(m_type==T_lineIn)
|
||||||
|
{
|
||||||
|
painter->setPen(Qt::NoPen);
|
||||||
|
painter->setBrush(Qt::green);
|
||||||
|
painter->drawEllipse(boundingRect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
||||||
|
}
|
||||||
|
else if(m_type==T_lineOut)
|
||||||
|
{
|
||||||
|
painter->setPen(Qt::NoPen);
|
||||||
|
painter->setBrush(Qt::red);
|
||||||
|
painter->drawEllipse(boundingRect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleRect::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
|
||||||
|
{
|
||||||
|
ItemControlHandle::hoverEnterEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleRect::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
|
||||||
|
{
|
||||||
|
ItemControlHandle::hoverLeaveEvent(event);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
#include "graphicsItem/handleText.h"
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QGraphicsProxyWidget>
|
||||||
|
|
||||||
|
HandleText::HandleText(QGraphicsItem *parent)
|
||||||
|
: ItemControlHandle(parent)
|
||||||
|
,_font(QFont())
|
||||||
|
,_proxy(nullptr)
|
||||||
|
{
|
||||||
|
_editable = true;
|
||||||
|
_boundingRect = QRectF(-TEXT_WIDTH*0.5,-TEXT_WIDTH*0.5,TEXT_WIDTH,TEXT_HEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
HandleText::~HandleText()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleText::setText(QString str)
|
||||||
|
{
|
||||||
|
_text = str;
|
||||||
|
QFontMetrics fontMetrics(_font);
|
||||||
|
_boundingRect = fontMetrics.boundingRect(_text);
|
||||||
|
int w = _boundingRect.width();
|
||||||
|
int h = _boundingRect.height();
|
||||||
|
_boundingRect.moveTo(QPointF(-w*0.5,-h*0.5));
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleText::creatEditor()
|
||||||
|
{
|
||||||
|
if(!_editable)
|
||||||
|
return;
|
||||||
|
if(!_proxy)
|
||||||
|
_proxy = new QGraphicsProxyWidget(this);
|
||||||
|
_proxy->setVisible(true);
|
||||||
|
QLineEdit *editor = new QLineEdit();
|
||||||
|
editor->setText(_text);
|
||||||
|
editor->resize(boundingRect().size().toSize()*1.5);
|
||||||
|
_proxy->setWidget(editor);
|
||||||
|
|
||||||
|
// 将文本编辑的更改连接到文本项
|
||||||
|
connect(editor, &QLineEdit::textChanged, this, [this, editor]() {
|
||||||
|
//_text = editor->text();
|
||||||
|
setText(editor->text());
|
||||||
|
});
|
||||||
|
|
||||||
|
// 完成编辑后,删除QTextEdit
|
||||||
|
connect(editor, &QLineEdit::editingFinished, this, [this, editor]() {
|
||||||
|
//_text = editor->text();
|
||||||
|
setText(editor->text());
|
||||||
|
_proxy->setVisible(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleText::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||||
|
{
|
||||||
|
painter->setPen(Qt::blue);
|
||||||
|
painter->setBrush(Qt::blue);
|
||||||
|
painter->setRenderHint(QPainter::TextAntialiasing, true);
|
||||||
|
int w = _boundingRect.width();
|
||||||
|
int h = _boundingRect.height();
|
||||||
|
painter->drawText(QPointF(-w*0.5,h*0.5),_text);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF HandleText::boundingRect() const
|
||||||
|
{
|
||||||
|
return _boundingRect;
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
#include "graphicsItem/itemControlHandle.h"
|
#include "graphicsItem/itemControlHandle.h"
|
||||||
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
ItemControlHandle::ItemControlHandle(QGraphicsItem *parent)
|
ItemControlHandle::ItemControlHandle(QGraphicsItem *parent)
|
||||||
: QGraphicsRectItem(-HNDLE_SIZE / 2,
|
: QGraphicsItem(parent)
|
||||||
-HNDLE_SIZE / 2,
|
,_parent(nullptr)
|
||||||
HNDLE_SIZE,
|
|
||||||
HNDLE_SIZE, parent)
|
|
||||||
{
|
{
|
||||||
m_type = T_resize;
|
m_type = T_resize;
|
||||||
m_tag = H_none;
|
m_tag = H_none;
|
||||||
|
|
@ -21,48 +20,16 @@ void ItemControlHandle::paint(QPainter* painter, const QStyleOptionGraphicsItem*
|
||||||
{
|
{
|
||||||
Q_UNUSED(option)
|
Q_UNUSED(option)
|
||||||
Q_UNUSED(widget)
|
Q_UNUSED(widget)
|
||||||
|
|
||||||
painter->setPen(Qt::SolidLine);
|
|
||||||
painter->setRenderHint(QPainter::Antialiasing, true);
|
|
||||||
|
|
||||||
if(m_type==T_resize)
|
|
||||||
{
|
|
||||||
painter->setBrush(Qt::white);
|
|
||||||
painter->drawRect(rect());
|
|
||||||
}
|
|
||||||
else if(m_type==T_rotate)
|
|
||||||
{
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
painter->setBrush(Qt::NoBrush);
|
|
||||||
painter->drawRect(rect());
|
|
||||||
}
|
|
||||||
else if(m_type==T_editShape)
|
|
||||||
{
|
|
||||||
painter->setBrush(Qt::green);
|
|
||||||
painter->drawEllipse(rect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
|
||||||
}
|
|
||||||
else if(m_type==T_lineIn)
|
|
||||||
{
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
painter->setBrush(Qt::green);
|
|
||||||
painter->drawEllipse(rect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
|
||||||
}
|
|
||||||
else if(m_type==T_lineOut)
|
|
||||||
{
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
painter->setBrush(Qt::red);
|
|
||||||
painter->drawEllipse(rect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemControlHandle::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
|
void ItemControlHandle::hoverEnterEvent(QGraphicsSceneHoverEvent* event)
|
||||||
{
|
{
|
||||||
QGraphicsRectItem::hoverEnterEvent(event);
|
QGraphicsItem::hoverEnterEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemControlHandle::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
|
void ItemControlHandle::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
|
||||||
{
|
{
|
||||||
QGraphicsRectItem::hoverLeaveEvent(event);
|
QGraphicsItem::hoverLeaveEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ItemControlHandle::getSize()
|
int ItemControlHandle::getSize()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include "graphicsItem/itemPort.h"
|
#include "graphicsItem/itemPort.h"
|
||||||
|
#include "graphicsItem/handleRect.h"
|
||||||
|
|
||||||
ItemPort::ItemPort(QGraphicsItem *parent)
|
ItemPort::ItemPort(QGraphicsItem *parent)
|
||||||
: ItemControlHandle(parent)
|
: HandleRect(parent)
|
||||||
{
|
{
|
||||||
_pos = P_top;
|
_pos = P_top;
|
||||||
_ptr = nullptr;
|
_ptr = nullptr;
|
||||||
|
|
@ -21,7 +22,7 @@ void ItemPort::paint(QPainter* painter, const QStyleOptionGraphicsItem* option,
|
||||||
painter->setRenderHint(QPainter::Antialiasing, true);
|
painter->setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
|
||||||
QPolygonF Triangle;
|
QPolygonF Triangle;
|
||||||
QRectF rec = rect();
|
QRectF rec = boundingRect();
|
||||||
qreal left = rec.left();
|
qreal left = rec.left();
|
||||||
qreal right = rec.right();
|
qreal right = rec.right();
|
||||||
qreal width = rec.width();
|
qreal width = rec.width();
|
||||||
|
|
@ -58,20 +59,6 @@ void ItemPort::paint(QPainter* painter, const QStyleOptionGraphicsItem* option,
|
||||||
}
|
}
|
||||||
else if(m_type == T_lineInOut)
|
else if(m_type == T_lineInOut)
|
||||||
{
|
{
|
||||||
painter->drawEllipse(rect().center(), HNDLE_SIZE / 4, HNDLE_SIZE / 4);
|
painter->drawEllipse(boundingRect().center(), HNDLE_SIZE / 4, HNDLE_SIZE / 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if(m_type==T_lineIn)
|
|
||||||
{
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
painter->setBrush(Qt::green);
|
|
||||||
painter->drawEllipse(rect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
|
||||||
}
|
|
||||||
else if(m_type==T_lineOut)
|
|
||||||
{
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
painter->setBrush(Qt::red);
|
|
||||||
painter->drawEllipse(rect().center(), HNDLE_SIZE / 2, HNDLE_SIZE / 2);
|
|
||||||
}*/
|
|
||||||
//ItemControlHandle::paint(painter,option,widget);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
#include "util/baseSelector.h"
|
#include "util/baseSelector.h"
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
#include <graphicsItem/graphicsBaseItem.h>
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
#include "graphicsItem/handleText.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QPointF BaseSelector::ms_ptMouseDown(0.0,0.0);
|
QPointF BaseSelector::ms_ptMouseDown(0.0,0.0);
|
||||||
QPointF BaseSelector::ms_ptMouseLast(0.0,0.0);
|
QPointF BaseSelector::ms_ptMouseLast(0.0,0.0);
|
||||||
|
|
@ -39,48 +42,58 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen
|
||||||
QList<QGraphicsItem *> items = scene->selectedItems();
|
QList<QGraphicsItem *> items = scene->selectedItems();
|
||||||
if (items.count() == 1) //只有一个选中
|
if (items.count() == 1) //只有一个选中
|
||||||
{
|
{
|
||||||
AbstractShape* item = qgraphicsitem_cast<AbstractShape*>(items.first());
|
GraphicsBaseItem* item = qgraphicsitem_cast<GraphicsBaseItem*>(items.first());
|
||||||
if(item)
|
if(item)
|
||||||
{
|
{
|
||||||
//需要增加当前是否点击在控制点的判断函数
|
GraphicsItemType tpe = item->getItemType();
|
||||||
ms_nDragHandle = item->collidesWithHandle(event->scenePos());
|
if(tpe == GIT_link) //对象是连接线
|
||||||
if(ms_nDragHandle != H_none && ms_nDragHandle <= H_left) //在缩放控制点上
|
|
||||||
{
|
{
|
||||||
m_opMode = OM_scale;
|
m_opMode = OM_linkMove;
|
||||||
emit setWorkingSelector(ST_scaling);
|
|
||||||
}
|
|
||||||
else if(ms_nDragHandle >= H_rotate_leftTop && ms_nDragHandle <= H_rotate_leftBottom) //在旋转控制点上
|
|
||||||
{
|
|
||||||
m_opMode = OM_rotate;
|
|
||||||
//计算夹角
|
|
||||||
QPointF originPoint = item->mapToScene(item->boundingRect().center());
|
|
||||||
double dLengthY = ms_ptMouseLast.y() - originPoint.y();
|
|
||||||
double dLengthX = ms_ptMouseLast.x() - originPoint.x();
|
|
||||||
ms_dAngleMouseDownToItem = atan2(dLengthY, dLengthX) * 180 / M_PI;
|
|
||||||
// if(atan2(dLengthY, dLengthX) < 0)
|
|
||||||
// ms_dAngleMouseDownToItem += 360.0;
|
|
||||||
//创建副本
|
|
||||||
item->createOperationCopy();
|
|
||||||
emit setWorkingSelector(ST_rotation);
|
|
||||||
}
|
|
||||||
else if(ms_nDragHandle > H_rotate_leftBottom && ms_nDragHandle < H_connect) //编辑控制点上
|
|
||||||
{
|
|
||||||
m_opMode = OM_edit;
|
|
||||||
setCursor(scene, Qt::ClosedHandCursor);
|
|
||||||
emit setWorkingSelector(ST_editing);
|
|
||||||
}
|
|
||||||
else if(ms_nDragHandle >= H_connect ) //连接控制点
|
|
||||||
{
|
|
||||||
m_opMode = OM_connect;
|
|
||||||
//setCursor(scene, Qt::ClosedHandCursor);
|
|
||||||
setCursor(scene, Qt::ArrowCursor);
|
setCursor(scene, Qt::ArrowCursor);
|
||||||
emit setWorkingSelector(ST_connecting);
|
emit setWorkingSelector(ST_linkMoving);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_opMode = OM_move;
|
//需要增加当前是否点击在控制点的判断函数
|
||||||
setCursor(scene, Qt::ClosedHandCursor);
|
ms_nDragHandle = item->collidesWithHandle(event->scenePos());
|
||||||
emit setWorkingSelector(ST_moving);
|
if(ms_nDragHandle != H_none && ms_nDragHandle <= H_left) //在缩放控制点上
|
||||||
|
{
|
||||||
|
m_opMode = OM_scale;
|
||||||
|
emit setWorkingSelector(ST_scaling);
|
||||||
|
}
|
||||||
|
else if(ms_nDragHandle >= H_rotate_leftTop && ms_nDragHandle <= H_rotate_leftBottom) //在旋转控制点上
|
||||||
|
{
|
||||||
|
m_opMode = OM_rotate;
|
||||||
|
//计算夹角
|
||||||
|
QPointF originPoint = item->mapToScene(item->boundingRect().center());
|
||||||
|
double dLengthY = ms_ptMouseLast.y() - originPoint.y();
|
||||||
|
double dLengthX = ms_ptMouseLast.x() - originPoint.x();
|
||||||
|
ms_dAngleMouseDownToItem = atan2(dLengthY, dLengthX) * 180 / M_PI;
|
||||||
|
// if(atan2(dLengthY, dLengthX) < 0)
|
||||||
|
// ms_dAngleMouseDownToItem += 360.0;
|
||||||
|
//创建副本
|
||||||
|
item->createOperationCopy();
|
||||||
|
emit setWorkingSelector(ST_rotation);
|
||||||
|
}
|
||||||
|
else if(ms_nDragHandle > H_rotate_leftBottom && ms_nDragHandle < H_textCaption) //编辑控制点上
|
||||||
|
{
|
||||||
|
m_opMode = OM_edit;
|
||||||
|
setCursor(scene, Qt::ClosedHandCursor);
|
||||||
|
emit setWorkingSelector(ST_editing);
|
||||||
|
}
|
||||||
|
else if(ms_nDragHandle >= H_connect ) //连接控制点
|
||||||
|
{
|
||||||
|
m_opMode = OM_connect;
|
||||||
|
//setCursor(scene, Qt::ClosedHandCursor);
|
||||||
|
setCursor(scene, Qt::ArrowCursor);
|
||||||
|
emit setWorkingSelector(ST_connecting);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_opMode = OM_move;
|
||||||
|
setCursor(scene, Qt::ClosedHandCursor);
|
||||||
|
emit setWorkingSelector(ST_moving);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -90,13 +103,36 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen
|
||||||
emit setWorkingSelector(ST_moving);
|
emit setWorkingSelector(ST_moving);
|
||||||
setCursor(scene, Qt::ClosedHandCursor);
|
setCursor(scene, Qt::ClosedHandCursor);
|
||||||
}
|
}
|
||||||
|
else if(items.count() == 0) //单独移动子类
|
||||||
|
{
|
||||||
|
QList<QGraphicsItem *> items = scene->items(ms_ptMouseLast);
|
||||||
|
if (items.count() == 1)
|
||||||
|
{
|
||||||
|
ItemControlHandle* pHandle = qgraphicsitem_cast<ItemControlHandle*>(items.first());
|
||||||
|
if(pHandle)
|
||||||
|
{
|
||||||
|
//GraphicsBaseItem* item = pHandle->getParentPtr();
|
||||||
|
ms_nDragHandle = pHandle->getTag();
|
||||||
|
//ms_nDragHandle = item->collidesWithHandle(event->scenePos());
|
||||||
|
if(ms_nDragHandle >= H_textCaption && ms_nDragHandle < H_connect) //移动文本
|
||||||
|
{
|
||||||
|
m_opMode = OM_subMove;
|
||||||
|
setCursor(scene, Qt::ClosedHandCursor);
|
||||||
|
emit setWorkingSelector(ST_subMoving);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(m_opMode == OM_move) //可以多个选中同时移动
|
if(m_opMode == OM_move) //可以多个选中同时移动
|
||||||
{
|
{
|
||||||
for(int n = 0; n < items.size(); n++)
|
for(int n = 0; n < items.size(); n++)
|
||||||
{
|
{
|
||||||
//创建副本
|
//创建副本
|
||||||
AbstractShape* item = qgraphicsitem_cast<AbstractShape*>(items.at(n));
|
GraphicsBaseItem* item = qgraphicsitem_cast<GraphicsBaseItem*>(items.at(n));
|
||||||
|
GraphicsItemType tpe = item->getItemType();
|
||||||
|
if(tpe == GIT_link)
|
||||||
|
continue;
|
||||||
item->createOperationCopy();
|
item->createOperationCopy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -303,8 +339,30 @@ void BaseSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerSc
|
||||||
|
|
||||||
void BaseSelector::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
void BaseSelector::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
{
|
{
|
||||||
Q_UNUSED(event)
|
QList<QGraphicsItem *> items = scene->selectedItems();
|
||||||
Q_UNUSED(scene)
|
if(items.count() == 0)
|
||||||
|
{
|
||||||
|
QList<QGraphicsItem *> items = scene->items(ms_ptMouseLast);
|
||||||
|
if (items.count() == 1)
|
||||||
|
{
|
||||||
|
ItemControlHandle* pHandle = qgraphicsitem_cast<ItemControlHandle*>(items.first());
|
||||||
|
if(pHandle)
|
||||||
|
{
|
||||||
|
ms_nDragHandle = pHandle->getTag();
|
||||||
|
//ms_nDragHandle = item->collidesWithHandle(event->scenePos());
|
||||||
|
if(ms_nDragHandle >= H_textCaption && ms_nDragHandle < H_connect) //移动文本
|
||||||
|
{
|
||||||
|
HandleText* pText = qgraphicsitem_cast<HandleText*>(pHandle);
|
||||||
|
if(pText)
|
||||||
|
{
|
||||||
|
//m_opMode = OM_subMove;
|
||||||
|
//emit setWorkingSelector(ST_subMoving);
|
||||||
|
pText->creatEditor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseSelector::setCursor(DesignerScene *scene, const QCursor &cursor)
|
void BaseSelector::setCursor(DesignerScene *scene, const QCursor &cursor)
|
||||||
|
|
|
||||||
|
|
@ -90,13 +90,14 @@ void ConnectingSelector::createConnectLline(GraphicsBaseItem* connectingItem,Gra
|
||||||
{
|
{
|
||||||
ElectricConnectLineItem* pItem = new ElectricConnectLineItem();
|
ElectricConnectLineItem* pItem = new ElectricConnectLineItem();
|
||||||
pItem->setItemId(++_Id);
|
pItem->setItemId(++_Id);
|
||||||
pItem->setItemType(GIT_connectLine);
|
pItem->setItemType(GIT_link);
|
||||||
scene->addItem(pItem);
|
scene->addItem(pItem);
|
||||||
|
|
||||||
ItemPort* ptSrc = connectingItem->getPortPtr(ms_nDragHandle);
|
ItemPort* ptSrc = connectingItem->getPortPtr(ms_nDragHandle);
|
||||||
int srcId = connectingItem->itemId();
|
int srcId = connectingItem->itemId();
|
||||||
int srcPort = ptSrc->getTag();
|
int srcPort = ptSrc->getTag();
|
||||||
HandleType srcType = ptSrc->getType();
|
HandleType srcType = ptSrc->getType();
|
||||||
|
PortPos srcPos = ptSrc->portPos();
|
||||||
pItem->setStartPoint(ptSrc->scenePos());
|
pItem->setStartPoint(ptSrc->scenePos());
|
||||||
ptSrc->setConnect(pItem);
|
ptSrc->setConnect(pItem);
|
||||||
|
|
||||||
|
|
@ -122,9 +123,10 @@ void ConnectingSelector::createConnectLline(GraphicsBaseItem* connectingItem,Gra
|
||||||
int destId = touchedItem->itemId();
|
int destId = touchedItem->itemId();
|
||||||
int destPort = ptDest->getTag();
|
int destPort = ptDest->getTag();
|
||||||
HandleType destType = ptDest->getType();
|
HandleType destType = ptDest->getType();
|
||||||
|
PortPos destPos = ptDest->portPos();
|
||||||
|
|
||||||
pItem->calculatePath();
|
pItem->calculatePath();
|
||||||
pItem->setConnection(Connection(srcId,srcPort,srcType,destId,destPort,destType));
|
pItem->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
||||||
ptDest->setConnect(pItem);
|
ptDest->setConnect(pItem);
|
||||||
|
|
||||||
m_graphicsItem[sceneName()].insert(QString::number(pItem->itemId()),pItem); //插入连接线到总表
|
m_graphicsItem[sceneName()].insert(QString::number(pItem->itemId()),pItem); //插入连接线到总表
|
||||||
|
|
@ -142,14 +144,20 @@ void ConnectingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, Designe
|
||||||
GraphicsBaseItem* item = qgraphicsitem_cast<GraphicsBaseItem*>(items.first());
|
GraphicsBaseItem* item = qgraphicsitem_cast<GraphicsBaseItem*>(items.first());
|
||||||
if(item)
|
if(item)
|
||||||
{
|
{
|
||||||
if(ms_nDragHandle != H_none)
|
if(ms_nDragHandle >= H_connect)
|
||||||
{
|
{
|
||||||
item->setState(S_prepareConnect);
|
ItemPort* pt = item->getPortPtr(ms_nDragHandle);
|
||||||
QPointF start = item->mapFromScene(ms_ptMouseDown);
|
if(pt)
|
||||||
QPointF end = item->mapFromScene(ms_ptMouseLast);
|
{
|
||||||
item->setBeginConnectPos(start);
|
if(pt->connected()) //只判断未连接的port
|
||||||
item->setEndConnectPos(end);
|
return;
|
||||||
m_pConnectingItem = item;
|
item->setState(S_prepareConnect);
|
||||||
|
QPointF start = item->mapFromScene(ms_ptMouseDown);
|
||||||
|
QPointF end = item->mapFromScene(ms_ptMouseLast);
|
||||||
|
item->setBeginConnectPos(start);
|
||||||
|
item->setEndConnectPos(end);
|
||||||
|
m_pConnectingItem = item;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ void CreatingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, Designer
|
||||||
case GIT_itemRect:
|
case GIT_itemRect:
|
||||||
{
|
{
|
||||||
m_creatingMethod = CM_click;
|
m_creatingMethod = CM_click;
|
||||||
m_pCreatingItem = new ElectricSvgItemRect(QRect(-20, -20, 40, 40));
|
m_pCreatingItem = new ElectricSvgItemRect(QRect(-15, -15, 30, 30));
|
||||||
m_pCreatingItem->setItemId(++_Id);
|
m_pCreatingItem->setItemId(++_Id);
|
||||||
m_pCreatingItem->setItemType(GIT_itemRect);
|
m_pCreatingItem->setItemType(GIT_itemRect);
|
||||||
m_pCreatingItem->editShape(ms_nDragHandle, ms_ptMouseLast);
|
m_pCreatingItem->editShape(ms_nDragHandle, ms_ptMouseLast);
|
||||||
|
|
@ -78,7 +78,7 @@ void CreatingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, Designer
|
||||||
case GIT_itemTri:
|
case GIT_itemTri:
|
||||||
{
|
{
|
||||||
m_creatingMethod = CM_click;
|
m_creatingMethod = CM_click;
|
||||||
m_pCreatingItem = new ElectricSvgItemTriangle(QRect(-20, -20, 40, 40));
|
m_pCreatingItem = new ElectricSvgItemTriangle(QRect(-15, -15, 30, 30));
|
||||||
m_pCreatingItem->setItemId(++_Id);
|
m_pCreatingItem->setItemId(++_Id);
|
||||||
m_pCreatingItem->setItemType(GIT_itemTri);
|
m_pCreatingItem->setItemType(GIT_itemTri);
|
||||||
m_pCreatingItem->editShape(ms_nDragHandle, ms_ptMouseLast);
|
m_pCreatingItem->editShape(ms_nDragHandle, ms_ptMouseLast);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
#include "util/linkMovingSelector.h"
|
||||||
|
#include <QGraphicsSceneMouseEvent>
|
||||||
|
#include <QGraphicsView>
|
||||||
|
#include "graphicsItem/electricConnectLineItem.h"
|
||||||
|
|
||||||
|
LinkMovingSelector::LinkMovingSelector(QObject *parent)
|
||||||
|
: BaseSelector(parent)
|
||||||
|
,m_pMovingLine(nullptr)
|
||||||
|
{
|
||||||
|
m_type = ST_linkMoving;
|
||||||
|
}
|
||||||
|
LinkMovingSelector::~LinkMovingSelector()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinkMovingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
|
{
|
||||||
|
ms_ptMouseLast = event->scenePos();
|
||||||
|
|
||||||
|
//QList<QGraphicsItem *> items = scene->selectedItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinkMovingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
|
{
|
||||||
|
ms_ptMouseLast = event->scenePos();
|
||||||
|
|
||||||
|
if(m_pMovingLine == nullptr)
|
||||||
|
{
|
||||||
|
QList<QGraphicsItem *> items = scene->selectedItems();
|
||||||
|
if (items.count() == 1) //只有一个选中
|
||||||
|
{
|
||||||
|
ElectricConnectLineItem* item = qgraphicsitem_cast<ElectricConnectLineItem*>(items.first());
|
||||||
|
if(item)
|
||||||
|
{
|
||||||
|
m_pMovingLine = item;
|
||||||
|
item->setLastPoint(ms_ptMouseLast);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(m_pMovingLine)
|
||||||
|
m_pMovingLine->moveLine(ms_ptMouseLast);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinkMovingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
|
{
|
||||||
|
if(m_pMovingLine)
|
||||||
|
{
|
||||||
|
m_pMovingLine->resetCurLine();
|
||||||
|
qDebug()<<"reset";
|
||||||
|
}
|
||||||
|
m_pMovingLine = nullptr;
|
||||||
|
ms_nDragHandle = H_none;
|
||||||
|
setCursor(scene, Qt::ArrowCursor);
|
||||||
|
scene->callParentEvent(event);
|
||||||
|
emit setWorkingSelector(ST_base);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -59,7 +59,7 @@ void MovingSelector::updateConnectLine(QList<QGraphicsItem *> lst)
|
||||||
auto item = dynamic_cast<GraphicsBaseItem*>(iter);
|
auto item = dynamic_cast<GraphicsBaseItem*>(iter);
|
||||||
if(item)
|
if(item)
|
||||||
{
|
{
|
||||||
if(item->getItemType() != GIT_connectLine)
|
if(item->getItemType() != GIT_link)
|
||||||
{
|
{
|
||||||
int nId = item->itemId();
|
int nId = item->itemId();
|
||||||
for(auto pPort:item->getPorts())
|
for(auto pPort:item->getPorts())
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
#include "util/selectorManager.h"
|
#include "util/selectorManager.h"
|
||||||
#include "util/creatingSelector.h"
|
#include "util/creatingSelector.h"
|
||||||
#include "util/movingSelector.h"
|
#include "util/movingSelector.h"
|
||||||
|
#include "util/subMovingSelector.h"
|
||||||
|
#include "util/linkMovingSelector.h"
|
||||||
#include "util/rotationSelector.h"
|
#include "util/rotationSelector.h"
|
||||||
#include "util/scalingSelector.h"
|
#include "util/scalingSelector.h"
|
||||||
#include "util/editingSelector.h"
|
#include "util/editingSelector.h"
|
||||||
|
|
@ -21,6 +23,12 @@ SelectorManager::SelectorManager(QObject *parent)
|
||||||
MovingSelector* movingSelector = new MovingSelector(this);
|
MovingSelector* movingSelector = new MovingSelector(this);
|
||||||
connect(movingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
|
connect(movingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
|
||||||
m_vecSelectors.push_back(movingSelector);
|
m_vecSelectors.push_back(movingSelector);
|
||||||
|
SubMovingSelector* subMovSelector = new SubMovingSelector(this);
|
||||||
|
connect(subMovSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
|
||||||
|
m_vecSelectors.push_back(subMovSelector);
|
||||||
|
LinkMovingSelector* linkMovSelector = new LinkMovingSelector(this);
|
||||||
|
connect(linkMovSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
|
||||||
|
m_vecSelectors.push_back(linkMovSelector);
|
||||||
RotationSelector* rotationSelector = new RotationSelector(this);
|
RotationSelector* rotationSelector = new RotationSelector(this);
|
||||||
connect(rotationSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
|
connect(rotationSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
|
||||||
m_vecSelectors.push_back(rotationSelector);
|
m_vecSelectors.push_back(rotationSelector);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
#include "util/SubMovingSelector.h"
|
||||||
|
#include <QGraphicsSceneMouseEvent>
|
||||||
|
#include <QGraphicsView>
|
||||||
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
#include "graphicsItem/handleText.h"
|
||||||
|
|
||||||
|
SubMovingSelector::SubMovingSelector(QObject *parent)
|
||||||
|
: BaseSelector(parent)
|
||||||
|
,m_pParentItem(nullptr)
|
||||||
|
{
|
||||||
|
m_type = ST_subMoving;
|
||||||
|
}
|
||||||
|
SubMovingSelector::~SubMovingSelector()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SubMovingSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
|
{
|
||||||
|
ms_ptMouseLast = event->scenePos();
|
||||||
|
|
||||||
|
QList<QGraphicsItem *> items = scene->selectedItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SubMovingSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
|
{
|
||||||
|
ms_ptMouseLast = event->scenePos();
|
||||||
|
if(m_pParentItem == nullptr)
|
||||||
|
{
|
||||||
|
QList<QGraphicsItem *> items = scene->items(ms_ptMouseLast);
|
||||||
|
if (items.count() == 1)
|
||||||
|
{
|
||||||
|
ItemControlHandle* pHandle = qgraphicsitem_cast<ItemControlHandle*>(items.first());
|
||||||
|
if(pHandle)
|
||||||
|
{
|
||||||
|
GraphicsBaseItem* item = pHandle->getParentPtr();
|
||||||
|
if(item)
|
||||||
|
{
|
||||||
|
if(ms_nDragHandle >= H_textCaption && ms_nDragHandle < H_connect) //移动文本
|
||||||
|
{
|
||||||
|
pHandle->setPos(item->mapFromScene(ms_ptMouseLast));
|
||||||
|
m_pParentItem = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(m_pParentItem)
|
||||||
|
{
|
||||||
|
if(ms_nDragHandle >= H_textCaption && ms_nDragHandle < H_connect) //文本
|
||||||
|
{
|
||||||
|
HandleText* pt = dynamic_cast<HandleText*>(m_pParentItem->getHandlePtr(ms_nDragHandle));
|
||||||
|
if(pt)
|
||||||
|
{
|
||||||
|
pt->setPos(m_pParentItem->mapFromScene(ms_ptMouseLast));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SubMovingSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, DesignerScene* scene)
|
||||||
|
{
|
||||||
|
m_pParentItem = nullptr;
|
||||||
|
ms_nDragHandle = H_none;
|
||||||
|
setCursor(scene, Qt::ArrowCursor);
|
||||||
|
scene->callParentEvent(event);
|
||||||
|
emit setWorkingSelector(ST_base);
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue