实现了榜单界面,修改了初始推荐界面,对搜索界面进行了优化。

master
DongYanqi1029 4 years ago
parent 71dac528c2
commit 0d2d9f2225

@ -41,6 +41,7 @@ SOURCES += \
searchresultwidget.cpp \
showplaceinfowidget.cpp \
showrouteinfowidget.cpp \
smtp.cpp \
sortwidget.cpp \
userinfowidget.cpp \
userwidget.cpp \
@ -71,6 +72,7 @@ HEADERS += \
searchresultwidget.h \
showplaceinfowidget.h \
showrouteinfowidget.h \
smtp.h \
sortwidget.h \
userinfowidget.h \
userwidget.h \

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2021-07-04T17:04:03. -->
<!-- Written by QtCreator 4.11.1, 2021-07-04T23:04:41. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{d82e82d4-1ed7-46a6-9098-5e0a8f0d7fa3}</value>
<value type="QByteArray">{61ba832e-6c30-4ab6-b0b8-ace44f46ca0c}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -44,8 +44,8 @@
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.UseGlobal">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">0</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>
@ -63,6 +63,249 @@
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_msvc2017_64_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/gitRepositories/TourInChangSha/src/ChangShaTour/ChangShaTour.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/gitRepositories/TourInChangSha/src/ChangShaTour/ChangShaTour.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
@ -71,7 +314,7 @@
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -119,7 +362,7 @@
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -167,7 +410,7 @@
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_32_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -305,7 +548,7 @@
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<variable>ProjectExplorer.Project.Target.2</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
@ -314,7 +557,7 @@
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -362,7 +605,7 @@
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -410,7 +653,7 @@
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/大三下/软件体系结构/Trip-in-Chang-sha/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Study/SE/project/code/Trip-in-Chang-sha-main-4/Trip-in-Chang-sha-main/build-ChangShaTour-Desktop_Qt_5_14_2_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@ -549,7 +792,7 @@
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
<value type="int">3</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>

@ -5,6 +5,7 @@ QSqlDatabase meituanDb;
QSqlDatabase userDb;
QSqlDatabase listDb;
QMap<QString,QString> labelToDb;
QStringList recommendlabel;
cglobal::cglobal()
@ -71,7 +72,7 @@ void cglobal::labelmap()
labelToDb[QStringLiteral("公寓")]="hotel";
labelToDb[QStringLiteral("豪华酒店")]="hotel";
labelToDb[QStringLiteral("客栈")]="hotel";
labelToDb[QStringLiteral("青年旅")]="hotel";
labelToDb[QStringLiteral("青年旅")]="hotel";
labelToDb[QStringLiteral("度假酒店")]="hotel";
labelToDb[QStringLiteral("别墅")]="hotel";
labelToDb[QStringLiteral("民宿")]="hotel";
@ -93,8 +94,8 @@ void cglobal::labelmap()
labelToDb[QStringLiteral("乒乓球")]="sport";
labelToDb[QStringLiteral("体育球馆")]="sport";
//recommendlabel<<"代金券"<<"蛋糕甜点"<<"自助餐"<<"小吃快餐"<<"火锅"<<"西餐"<<"烧烤烤肉"<"川湘菜"<<"东北菜"<<"江浙菜"<<"香锅烤鱼"<<"粤菜"<<"西北菜"<<"咖啡酒吧"<<"京菜鲁菜"<<"东南亚菜"<<"海鲜"<<"素食"<<"台湾/客家菜"<<"创意菜"<<"蒙餐"<<"新疆菜"<<"其他美食"<<"聚餐宴请";
//recommendlabel<<"经济型酒店"<<"主题酒店"<<"商务酒店"<<"公寓"<<"豪华酒店"<<"客栈"<<"青年旅社"<<"度假酒店"<<"别墅"<<"民宿";
//recommendlabel<<"新奇体验"<<"团建扩展"<<"足疗/按摩"<<"洗浴/汗蒸"<<"KTV"<<"酒吧"<<"电玩/游戏厅"<<"运动健身"<<"私人影院"<<"DIY手工坊"<<"密室逃脱"<<"网吧网咖"<<"茶馆"<<"棋牌室"<<"轰趴馆"<<"桌游"<<"真人CS"<<"采摘/农家乐 VR",\
//recommendlabel<<"休闲运动 游泳 健身中心 羽毛球 台球 武术 保龄球 高尔夫 篮球 滑冰 射击射箭 网球 骑马 乒乓球 体育场馆";
recommendlabel<<QStringLiteral("川湘菜")<<QStringLiteral("景点")<<QStringLiteral("运动健身")<<QStringLiteral("民宿")<<QStringLiteral("蛋糕甜点")<<QStringLiteral("自助餐")<<QStringLiteral("小吃快餐")<<QStringLiteral("火锅")<<QStringLiteral("日韩料理")<<QStringLiteral("西餐")<<QStringLiteral("烧烤烤肉")<<QStringLiteral("东北菜")<<QStringLiteral("江浙菜")<<QStringLiteral("中式烧烤/烤串")<<QStringLiteral("香锅烤鱼")<<QStringLiteral("粤菜")<<QStringLiteral("西北菜")<<QStringLiteral("咖啡酒吧")<<QStringLiteral("云贵菜")<<QStringLiteral("京菜鲁菜")<<QStringLiteral("东南亚菜")<<QStringLiteral("海鲜")<<QStringLiteral("素食")<<QStringLiteral("台湾/客家菜")<<QStringLiteral("创意菜")<<QStringLiteral("汤/洲/炖菜")<<QStringLiteral("蒙餐")<<QStringLiteral("新疆菜")<<QStringLiteral("其他美食")<<QStringLiteral("聚餐宴请");
recommendlabel<<QStringLiteral("经济型酒店")<<QStringLiteral("主题酒店")<<QStringLiteral("商务酒店")<<QStringLiteral("公寓")<<QStringLiteral("豪华酒店")<<QStringLiteral("客栈")<<QStringLiteral("青年旅社")<<QStringLiteral("度假酒店")<<QStringLiteral("别墅");
recommendlabel<<QStringLiteral("代金券")<<QStringLiteral("新奇体验")<<QStringLiteral("团建扩展")<<QStringLiteral("足疗/按摩")<<QStringLiteral("洗浴/汗蒸")<<QStringLiteral("KTV")<<QStringLiteral("酒吧")<<QStringLiteral("电玩/游戏厅")<<QStringLiteral("私人影院")<<QStringLiteral("DIY手工坊")<<QStringLiteral("密室逃脱")<<QStringLiteral("网吧网咖")<<QStringLiteral("茶馆")<<QStringLiteral("棋牌室")<<QStringLiteral("轰趴馆")<<QStringLiteral("桌游")<<QStringLiteral("真人CS")<<QStringLiteral("采摘/农家乐")<<QStringLiteral("VR");
recommendlabel<<QStringLiteral("滑翔伞")<<QStringLiteral("赛车")<<QStringLiteral("游泳")<<QStringLiteral("健身中心")<<QStringLiteral("羽毛球")<<QStringLiteral("台球")<<QStringLiteral("武术")<<QStringLiteral("保龄球")<<QStringLiteral("高尔夫")<<QStringLiteral("篮球")<<QStringLiteral("滑冰")<<QStringLiteral("射击射箭")<<QStringLiteral("网球")<<QStringLiteral("骑马")<<QStringLiteral("乒乓球")<<QStringLiteral("体育场馆");
}

@ -8,11 +8,6 @@ HistoryWidget::HistoryWidget(QWidget *parent) :
ui->setupUi(this);
limit = 10;
cateList.append("food");
cateList.append("entertainment");
cateList.append("hotel");
cateList.append("attractions");
cateList.append("sport");
mainLayout = new QVBoxLayout();
@ -26,9 +21,10 @@ HistoryWidget::HistoryWidget(QWidget *parent) :
for (int i = 0; i < limit; i++)
{
btnList[i] = new QPushButton();
btnList[i]->setVisible(false);
}
//获取用户历史信息存入historyList
//获取用户历史信息存入historyList和cateIdList
getHistory();
//根据历史信息获取店铺信息填入nameList中
getShops();
@ -64,12 +60,12 @@ void HistoryWidget::getHistory()
{
QSqlQuery historyQuery(userDb);
historyQuery.prepare("select url,cateId from history where id=:id order by createdtime DESC");
historyQuery.prepare("select * from history where userId=:id order by createdtime DESC");
historyQuery.bindValue(":id", Id);
historyQuery.exec();
while (historyQuery.next() == true)
{
// qDebug() << historyQuery.value("url").value<QString>();
qDebug() << "HistoryUrl:" << historyQuery.value("url").value<QString>();
historyList.append(historyQuery.value("url").value<QString>());
cateIdList.append(historyQuery.value("cateId").value<QString>());
}
@ -82,15 +78,11 @@ void HistoryWidget::getShops()
for (int i = 0; i < historyList.length(); i++)
{
for (int j = 0; j < cateList.length(); j++)
{
shopQuery.prepare("select title from " + cateList[j] + " where detail=:url");
shopQuery.bindValue(":url", historyList[i]);
shopQuery.exec();
shopQuery.next();
if (shopQuery.isValid())
break;
}
QString cate = labelToDb[cateIdList[i]];
shopQuery.prepare("select title from " + cate + " where detail=:url");
shopQuery.bindValue(":url", historyList[i]);
shopQuery.exec();
shopQuery.next();
// qDebug() << shopQuery.value("title").value<QString>();
nameList.append(shopQuery.value("title").value<QString>());
}
@ -101,8 +93,9 @@ void HistoryWidget::setBtns()
for (int i = 0; i < historyList.length(); i++)
{
btnList[i]->setText(nameList[i]);
btnList[i]->setVisible(true);
// btnList[i]->setFixedSize(QSize(200,200));
connect(btnList[i], &QPushButton::clicked, this, [=](){web->loadPage(historyList[i],cateIdList[i]); web->setVisible(true); subWidget->setVisible(false);});
connect(btnList[i], &QPushButton::clicked, this, [=](){web->loadPage(historyList[i], cateIdList[i]); web->setVisible(true); subWidget->setVisible(false);});
}
}

@ -9,7 +9,6 @@
#include "webwidget.h"
#include "cglobal.h"
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
@ -38,7 +37,6 @@ private:
Ui::HistoryWidget *ui;
int limit;
QStringList cateList;
QVBoxLayout *mainLayout;

@ -9,8 +9,11 @@ ListWidget::ListWidget(QWidget *parent) :
ui(new Ui::ListWidget)
{
ui->setupUi(this);
qDebug("Creating ListWidget...");
// QSqlQuery queryList(listDb);
// QSqlQuery queryMeituan(meituanDb);
listLen = 8;
listLen = 10;
mainLayout = new QVBoxLayout();
subWidget = new QWidget();
@ -45,53 +48,20 @@ ListWidget::ListWidget(QWidget *parent) :
title_3->setAlignment(Qt::AlignCenter);
title_3->setFont(QFont( "Timers", 15, QFont::Bold) );
for (int i = 0; i < (listLen + 1); i++)
{
QHBoxLayout *line_1 = new QHBoxLayout();
QHBoxLayout *line_2 = new QHBoxLayout();
QHBoxLayout *line_3 = new QHBoxLayout();
if (i > 0)
{
QLabel *rank_1 = new QLabel(QString::number(i));
rank_1->setAlignment(Qt::AlignCenter);
QLabel *rank_2 = new QLabel(QString::number(i));
rank_2->setAlignment(Qt::AlignCenter);
QLabel *rank_3 = new QLabel(QString::number(i));
rank_3->setAlignment(Qt::AlignCenter);
QToolButton *btn_1 = new QToolButton();
QToolButton *btn_2 = new QToolButton();
QToolButton *btn_3 = new QToolButton();
btn_1 = setBtn(btn_1, "D:/Study/SE/project/images/transparent.png", "1btn" + QString::number(i));
btn_2 = setBtn(btn_2, "D:/Study/SE/project/images/transparent.png", "2btn" + QString::number(i));
btn_3 = setBtn(btn_3, "D:/Study/SE/project/images/transparent.png", "3btn" + QString::number(i));
//设置布局
line_1->addWidget(rank_1, 1);
line_1->addWidget(btn_1, 10);
line_2->addWidget(rank_2, 1);
line_2->addWidget(btn_2, 10);
line_3->addWidget(rank_3, 1);
line_3->addWidget(btn_3, 10);
//添加入列表
rankList_1[i - 1] = rank_1;
rankList_2[i - 1] = rank_2;
rankList_3[i - 1] = rank_3;
btnList_1[i - 1] = btn_1;
btnList_2[i - 1] = btn_2;
btnList_3[i - 1] = btn_3;
//为每个按钮连接跳转界面信号,并添加历史记录
}
else
{
line_1->addWidget(title_1);
line_2->addWidget(title_2);
line_3->addWidget(title_3);
}
lineList_1[i] = line_1;
lineList_2[i] = line_2;
lineList_3[i] = line_3;
}
QHBoxLayout *line_1 = new QHBoxLayout();
QHBoxLayout *line_2 = new QHBoxLayout();
QHBoxLayout *line_3 = new QHBoxLayout();
line_1->addWidget(title_1);
line_2->addWidget(title_2);
line_3->addWidget(title_3);
lineList_1[0] = line_1;
lineList_2[0] = line_2;
lineList_3[0] = line_3;
setHotList();
setMinorityList();
setFavorableList();
//设置总体布局
this->setLayout(mainLayout);
@ -105,14 +75,16 @@ ListWidget::ListWidget(QWidget *parent) :
listLayout->addLayout(layout_2, 1);
listLayout->addLayout(layout_3, 1);
// layout_1->setSizeConstraint(QLayout::SetMinimumSize);
for (int i = 0; i < (listLen + 1); i++)
{
layout_1->addLayout(lineList_1[i]);
layout_2->addLayout(lineList_2[i]);
layout_3->addLayout(lineList_3[i]);
}
connect(web->getReturnBtn(), &QPushButton::clicked, this, &ListWidget::returnWeb);
qDebug("LisWidget Completed");
}
ListWidget::~ListWidget()
@ -130,3 +102,163 @@ QToolButton *ListWidget::setBtn(QToolButton *btn, const QString iconPath, const
return btn;
}
QStringList ListWidget::queryMeituanDatabase(QSqlQuery query)
{
QStringList result;
query.exec();
query.next();
QVariant id = query.value("id");
// QVariant detail = query.value("detail");
QVariant frontimg = query.value("frontimg");
QVariant title = query.value("title");
// QVariant avgscore = query.value("avgscore");
// QVariant comments = query.value("comments");
// QVariant address = query.value("address");
// QVariant cateId = query.value("cateId");
// QVariant avgprice = query.value("avgprice");
QString img = frontimg.value<QString>();
QString name = title.value<QString>();
QString Id = QString::number(id.value<qlonglong>());
// QString url = detail.value<QString>();
// QString score = QString::number(avgscore.value<double>());
// QString commentNum = QString::number(comments.value<qlonglong>());
// QString addr = address.value<QString>();
// QString price = QString::number(avgprice.value<qlonglong>());
// QString text = name + "\n" + score + "分 " + commentNum + "条评论\n" + addr + "\n";// + "人均" + price + "元";
// QString cateid = cateId.value<QString>();
result.append(img);
result.append(name);
result.append(Id);
return result;
}
void ListWidget::returnWeb()
{
subWidget->setVisible(true);
web->setVisible(false);
}
void ListWidget::setHotList()
{
QSqlQuery queryList(listDb);
QSqlQuery queryMeituan(meituanDb);
int index = 1;
queryList.prepare("select * from hotlist limit :limit");
queryList.bindValue(":limit", listLen);
queryList.exec();
while (queryList.next() == true && index < (listLen + 1))
{
QHBoxLayout *line = new QHBoxLayout();
QLabel *rank = new QLabel(QString::number(index));
rank->setAlignment(Qt::AlignCenter);
QToolButton *btn = new QToolButton();
QString url = queryList.value("url").value<QString>();
QString cate = queryList.value("cateId").value<QString>();
queryMeituan.prepare("select * from " + labelToDb[cate] + " where detail = :url");
// qDebug() << "类名:" << cate;
// qDebug() << "所属表名:" << labelToDb[cate];
queryMeituan.bindValue(":url", url);
QStringList list = queryMeituanDatabase(queryMeituan);//获得图片链接和店铺名和id
imgDownloader *imgDownload = new imgDownloader();
QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cate] + list[2] + ".png";
imgDownload->downloadFileFromUrl(list[0], imgPath);
btn = setBtn(btn, imgPath, list[1]);
connect(btn, &QToolButton::clicked, this, [=](){web->loadPage(url, cate); subWidget->setVisible(false); web->setVisible(true);});
line->addWidget(rank, 1);
line->addWidget(btn, 10);
lineList_1[index] = line;
index++;
}
}
void ListWidget::setMinorityList()
{
QSqlQuery queryList(listDb);
QSqlQuery queryMeituan(meituanDb);
int index = 1;
queryList.prepare("select * from minoritylist limit :limit");
queryList.bindValue(":limit", listLen);
queryList.exec();
while (queryList.next() == true && index < (listLen + 1))
{
QHBoxLayout *line = new QHBoxLayout();
QLabel *rank = new QLabel(QString::number(index));
rank->setAlignment(Qt::AlignCenter);
QToolButton *btn = new QToolButton();
QString url = queryList.value("url").value<QString>();
QString cate = queryList.value("cateId").value<QString>();
queryMeituan.prepare("select * from " + labelToDb[cate] + " where detail = :url");
// qDebug() << "类名:" << cate;
// qDebug() << "所属表名:" << labelToDb[cate];
queryMeituan.bindValue(":url", url);
QStringList list = queryMeituanDatabase(queryMeituan);//获得图片链接和店铺名和id
imgDownloader *imgDownload = new imgDownloader();
QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cate] + list[2] + ".png";
imgDownload->downloadFileFromUrl(list[0], imgPath);
btn = setBtn(btn, imgPath, list[1]);
connect(btn, &QToolButton::clicked, this, [=](){web->loadPage(url, cate); subWidget->setVisible(false); web->setVisible(true);});
line->addWidget(rank, 1);
line->addWidget(btn, 10);
lineList_2[index] = line;
index++;
}
}
void ListWidget::setFavorableList()
{
QSqlQuery queryList(listDb);
QSqlQuery queryMeituan(meituanDb);
int index = 1;
queryList.prepare("select * from favorablelist limit :limit");
queryList.bindValue(":limit", listLen);
queryList.exec();
while (queryList.next() == true && index < (listLen + 1))
{
QHBoxLayout *line = new QHBoxLayout();
QLabel *rank = new QLabel(QString::number(index));
rank->setAlignment(Qt::AlignCenter);
QToolButton *btn = new QToolButton();
QString url = queryList.value("url").value<QString>();
QString cate = queryList.value("cateId").value<QString>();
queryMeituan.prepare("select * from " + labelToDb[cate] + " where detail = :url");
// qDebug() << "类名:" << cate;
// qDebug() << "所属表名:" << labelToDb[cate];
queryMeituan.bindValue(":url", url);
QStringList list = queryMeituanDatabase(queryMeituan);//获得图片链接和店铺名和id
imgDownloader *imgDownload = new imgDownloader();
QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cate] + list[2] + ".png";
imgDownload->downloadFileFromUrl(list[0], imgPath);
btn = setBtn(btn, imgPath, list[1]);
connect(btn, &QToolButton::clicked, this, [=](){web->loadPage(url, cate); subWidget->setVisible(false); web->setVisible(true);});
line->addWidget(rank, 1);
line->addWidget(btn, 10);
lineList_3[index] = line;
index++;
}
}

@ -10,6 +10,7 @@
#include <QSizePolicy>
#include <QToolButton>
#include "webwidget.h"
#include "imgdownloader.h"
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
@ -28,6 +29,11 @@ public:
~ListWidget();
QToolButton *setBtn(QToolButton *btn, const QString iconPath, const QString text);
QStringList queryMeituanDatabase(QSqlQuery query);
void returnWeb();
void setHotList();
void setMinorityList();
void setFavorableList();
private:

@ -34,8 +34,8 @@ void MainWindow::switchToMain()
else if(loginmanage->loginVerify(accountLogin,passwordLogin))
{
resize(1330, 720);
setMaximumSize(QSize(1330,720));
resize(1330, 1000);
setMaximumSize(QSize(1330,1000));
// showMaximized();
loginWidget->deleteLater();
mainWidget = new MainWidget();

@ -96,7 +96,11 @@ void RecommendWidget::queryDatabase(int page)
{
QString sqlToExec="select * from ";
sqlToExec.append(labelToDb[iter.key()]);
sqlToExec.append(" where cateId=\"");
sqlToExec.append(iter.key());
sqlToExec.append("\"");
sqlToExec.append(" limit ?, ?");
//qDebug()<<sqlToExec;
query.prepare(sqlToExec);
query.addBindValue(iter.value()*page);
query.addBindValue(iter.value());
@ -104,7 +108,6 @@ void RecommendWidget::queryDatabase(int page)
query.exec();
while(query.next()&&i<row*column)
{
i++;
QVariant id = query.value("id");
QVariant detail = query.value("detail");
@ -131,6 +134,7 @@ void RecommendWidget::queryDatabase(int page)
imgList.append(frontimg.value<QString>());
cateIdList.append(cateId.value<QString>());
textList.append(text);
i++;
}
iter++;
@ -150,7 +154,7 @@ void RecommendWidget::setBtns()
// QString imgPath = ":/images" + idList[index] + ".jpg";
QString imgPath = "D:/kunlin/OneDrive/QT project/images/"+labelToDb[cateIdList[index]] + QString::number(idList[index]) + ".png";
// qDebug() << QDir::currentPath();
// QString imgPath = "D:/Study/SE/project/images/food" + QString::number(idList[index]) + ".png";
// QString imgPath = "D:/Study/SE/project/images/" + labelToDb[cateIdList[index]] + QString::number(idList[index]) + ".png";
imgDownloader *download = new imgDownloader();
download->downloadFileFromUrl(imgList[index], imgPath);
qDebug()<<imgList[index];
@ -163,14 +167,6 @@ void RecommendWidget::setBtns()
void RecommendWidget::algorithm()
{
QSqlQuery query(userDb);
query.prepare("select cateId from recommend where userId=?");//查询用来判断recommend是否存在当前用户,无他用
query.addBindValue(Id);
query.exec();
query.next();
if(!(query.isValid()))
{
addNewUser();
}
//得到前四名的总点击量
query.prepare("select sum(clickCount) from (select clickCount from recommend where userId=? order by clickCount DESC limit ?) totalCount;");
query.addBindValue(Id);
@ -202,23 +198,7 @@ void RecommendWidget::algorithm()
qDebug()<<label<<" "<<labelCount[label];
}
}
void RecommendWidget::addNewUser()
{
//用户为新用户时,在这里初始化所有标签的点击量
QMap<QString,QString>::iterator iter=labelToDb.begin();
//int totalsize=recommendlabel.size();
//int i;
QSqlQuery query(userDb);
while(iter!=labelToDb.end())
{
query.prepare("insert into recommend(userId,cateId)values(?,?)");
query.addBindValue(Id);
query.addBindValue(iter.key());
query.exec();
iter++;
}
}
void RecommendWidget::webReturn()
{

@ -44,7 +44,6 @@ public:
void webReturn();
void rollTop();
void algorithm();
void addNewUser();
private:
Ui::RecommendWidget *ui;

@ -128,13 +128,37 @@ bool RegisterManager::registerVerify()
query.bindValue(":email", emailAddress);
query.bindValue(":password", password);
query.exec();
query.prepare("select id from account where email=?");
query.addBindValue(emailAddress);
query.exec();
query.next();
int id=query.value(0).toInt();
addNewUser(id);
return true;
}
return false;
}
void RegisterManager::addNewUser(int id)
{
//用户为新用户时,在这里初始化所有标签的点击量
qDebug()<<recommendlabel.size();
//QMap<QString,QString>::iterator iter=labelToDb.begin();
int totalsize=recommendlabel.size();
int i=0;
QSqlQuery query(userDb);
while(i<totalsize)
{
query.prepare("insert into recommend(userId,cateId)values(?,?)");
query.addBindValue(id);
query.addBindValue(recommendlabel[i]);
query.exec();
i++;
}
}
void RegisterManager::setEmailAddress(QString emailAddress)
{
this->emailAddress = emailAddress;

@ -35,6 +35,8 @@ public:
bool getSendEmailSuccess();
void addNewUser(int id);
private:
QString emailAddress;
QString password;

@ -50,19 +50,11 @@ SearchResultWidget::SearchResultWidget(QWidget *parent) : QWidget(parent)
subLayout->addWidget(rtn);
subLayout->addWidget(scroll);
subLayout->addLayout(switchLine);
//设置滚动界面布局
scrollWidget->setLayout(scrollLayout);
for (int i = 0; i < showLimit; i++)
{
scrollLayout->addWidget(btnList[i]);
}
scrollLayout->addLayout(switchLine);
switchLine->addWidget(up);
switchLine->addWidget(down);
scroll->setWidget(scrollWidget);
connect(web->getReturnBtn(), &QPushButton::clicked, this, &SearchResultWidget::returnWeb);
connect(up, &QPushButton::clicked, this, &SearchResultWidget::pageUp);
connect(down, &QPushButton::clicked, this, &SearchResultWidget::pageDown);
@ -98,6 +90,8 @@ void SearchResultWidget::getTotalNum()
}
pageNum = (totalNum + showLimit - 1)/showLimit;
page2cate = (int *)malloc(sizeof(int) * pageNum);
page2offset = (int *)malloc(sizeof(int) * pageNum);
}
@ -126,11 +120,13 @@ void SearchResultWidget::queryDatabase(QSqlQuery query)
QString addr = address.value<QString>();
// QString price = QString::number(avgprice.value<qlonglong>());
QString text = name + "\n" + score + "" + commentNum + "条评论\n" + addr + "\n";// + "人均" + price + "元";
QString cateid = cateId.value<QString>();
idList[i] = id.value<qlonglong>();
urlList.append(detail.value<QString>());
imgList.append(frontimg.value<QString>());
cateIdList.append(cateId.value<QString>());
textList.append(text);
cateIdList.append(cateid);
i++;
}
currentQueryLength = i - currentHead;
@ -164,7 +160,7 @@ void SearchResultWidget::setBtns()
qDebug() << "info:" << cateList[currentCate] << idList[index] << urlList[index] << imgList[index];
// btnList[index]->setVisible(true);
disconnect(btnList[index], 0, 0, 0);
connect(btnList[index], &QToolButton::clicked, this, [=](){web->loadPage(urlList[index],cateIdList[index]); subWidget->setVisible(false); web->setVisible(true); nullWidget->setVisible(false);});
connect(btnList[index], &QToolButton::clicked, this, [=](){web->loadPage(urlList[index], cateIdList[index]); subWidget->setVisible(false); web->setVisible(true); nullWidget->setVisible(false);});
}
for (i; i < showLimit; i++)
{
@ -173,8 +169,8 @@ void SearchResultWidget::setBtns()
// btnList[index]->setVisible(false);
disconnect(btnList[index], 0, 0, 0);
}
offset += currentQueryLength;
currentHead += currentQueryLength;
// offset += currentQueryLength;
// currentHead += currentQueryLength;
}
void SearchResultWidget::querySet()
@ -185,8 +181,18 @@ void SearchResultWidget::querySet()
urlList.clear();
imgList.clear();
textList.clear();
cateIdList.clear();
currentHead = 0;
currentQueryLength = 0;
currentCate = page2cate[currentPage - 1];
currentOffset = page2offset[currentPage - 1];
// subLayout->removeWidget(scroll);
scroll->takeWidget();
scrollWidget->deleteLater();
scrollWidget = new QWidget();
scrollLayout->deleteLater();
scrollLayout = new QVBoxLayout();
scrollWidget->setLayout(scrollLayout);
qDebug() << "currentPage:" << currentPage;
@ -195,17 +201,17 @@ void SearchResultWidget::querySet()
while (currentHead < showLimit)
{
//判断是否换表
if (offset >= lengthList[currentCate])
if (currentOffset >= lengthList[currentCate])
{
currentCate += 1;
offset = 0;
if (currentCate >= 3)
currentOffset = 0;
if (currentCate >= cateList.length())
break;
}
//查询数据
query.prepare("select * from " + cateList[currentCate] + " where title like :segment limit :offset , :showLimit");
query.bindValue(":segment", "%" + segment + "%");
query.bindValue(":offset", offset);
query.bindValue(":offset", currentOffset);
qDebug() << "currentCate:" << currentCate;
// qDebug() << "offset:" << offset;
query.bindValue(":showLimit", showLimit);
@ -214,7 +220,21 @@ void SearchResultWidget::querySet()
//设置按钮
setBtns();
// qDebug() << "set buttons success";
//设置滚动界面布局
for (int i = currentHead; i < currentHead + currentQueryLength; i++)
{
scrollLayout->addWidget(btnList[i]);
}
currentOffset += currentQueryLength;
currentHead += currentQueryLength;
}
page2cate[currentPage] = currentCate;
page2offset[currentPage] = currentOffset;
scroll->setWidget(scrollWidget);
}
@ -227,7 +247,9 @@ void SearchResultWidget::showResult()
qDebug() << "pageNum:" << pageNum;
currentPage = 1;
currentCate = 0;
offset = 0;
currentOffset = 0;
page2cate[0] = currentCate;
page2offset[0] = currentOffset;
if (totalNum)
{
querySet();

@ -46,12 +46,11 @@ private:
QStringList urlList;
QStringList imgList;
QStringList textList;
QStringList cateIdList;
int *idList;
QStringList cateIdList;
QStringList cateList;
int totalNum;
int offset;
int *lengthList;
int pageNum;
int showLimit;
@ -59,6 +58,10 @@ private:
int currentHead;
int currentQueryLength;
int currentCate;
int currentOffset;
int *page2cate;
int *page2offset;
QVBoxLayout *mainLayout;

@ -149,7 +149,7 @@ void SortWidget::setScreenBtns()
connect(pBtn, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(pBtn, pBtn->text());
funcLine->addWidget(pBtn, nColCnt++, 0);
funcLine->addWidget(pBtn);
}
funcWidget->setLayout(funcLine);
connect(signalMapper, SIGNAL(mapped(QString)), this, SLOT(setSubScreenBtns(QString)));

@ -40,25 +40,27 @@ QPushButton *WebWidget::getAddBtn()
void WebWidget::addToHis(QString url,QString cateId)
{
QSqlQuery query(userDb);
query.prepare("select historyId from history where url=?");
query.prepare("select historyId from history where url=? and userId=?");
query.addBindValue(url);
query.addBindValue(Id);
query.exec();
query.next();
if(query.isValid())
{
query.prepare("update history set createdtime = now() where url=?");
query.prepare("update history set createdtime = now() where url=? and userId=?");
query.addBindValue(url);
query.addBindValue(Id);
query.exec();
return ;
}
query.prepare("select count(*) from history where id = ?");
query.prepare("select count(*) from history where userId = ?");
query.addBindValue(Id);
query.exec();
query.next();
int count=query.value(0).toInt();
if(count>=hisLimit)
{
query.prepare("select historyId from history where id = ? order by createdtime");
query.prepare("select historyId from history where userId = ? order by createdtime");
query.addBindValue(Id);
query.exec();
query.next();
@ -71,7 +73,7 @@ void WebWidget::addToHis(QString url,QString cateId)
else
{
query.prepare("insert into history (id,url,cateId)values(?,?,?)");
query.prepare("insert into history (userId,url,cateId)values(?,?,?)");
query.addBindValue(Id);
query.addBindValue(url);
query.addBindValue(cateId);

Loading…
Cancel
Save