Browse Source

修改主页导航跳转索引方式,以兼容动态增删页面

chengxr 1 year ago
parent
commit
2578ed99e1
2 changed files with 22 additions and 58 deletions
  1. 20 49
      QFD/view/MainWindow.cpp
  2. 2 9
      QFD/view/MainWindow.h

+ 20 - 49
QFD/view/MainWindow.cpp

@@ -10,6 +10,8 @@
 #include "SettingView.h"
 #include "UserView.h"
 
+#include "QFDConfig.h"
+
 #include "common/QFDIcon.h"
 
 #include <QFramelessWindow.h>
@@ -138,44 +140,43 @@ void MainWindow::initNavigation()
     m_homeView->setObjectName("homeView");
     m_stackWidget->addWidget(m_homeView);
     m_naviInterface->addItem(m_homeView->objectName(), NEWFLICON(FluentIcon, HOME), "首页", this,
-                             SLOT(homeViewClicked()));
+                             SLOT(slotNaviItemClicked()));
 
-    m_projectView->setObjectName("projectView");
+    m_projectView->setObjectName("projectName");
     m_stackWidget->addWidget(m_projectView);
     m_naviInterface->addItem(m_projectView->objectName(), NEWFLICON(QFDIcon, Project), "项目管理", this,
-                             SLOT(projectViewClicked()));
+                             SLOT(slotNaviItemClicked()));
 
     m_expertManageView->setObjectName("expertManageView");
     m_stackWidget->addWidget(m_expertManageView);
     m_naviInterface->addItem(m_expertManageView->objectName(), NEWFLICON(QFDIcon, Expert), "专家信息管理", this,
-                             SLOT(expertViewClicked()));
+                             SLOT(slotNaviItemClicked()));
 
     m_evaluateView->setObjectName("evaluateView");
     m_stackWidget->addWidget(m_evaluateView);
     m_naviInterface->addItem(m_evaluateView->objectName(), NEWFLICON(QFDIcon, Data), "评估数据分析", this,
-                             SLOT(dataViewClicked()));
+                             SLOT(slotNaviItemClicked()));
 
     m_naviInterface->addSeparator();
 
     m_userView->setObjectName("userView");
     m_stackWidget->addWidget(m_userView);
-    m_naviInterface->addItem(m_userView->objectName(), NEWFLICON(QFDIcon, User), "用户", this, SLOT(userViewClicked()),
-                             true, NavigationItemPosition::BOTTOM);
+    m_naviInterface->addItem(m_userView->objectName(), NEWFLICON(QFDIcon, User), "用户", this,
+                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::BOTTOM);
 
     m_settingView->setObjectName("settingView");
     m_stackWidget->addWidget(m_settingView);
     m_naviInterface->addItem(m_settingView->objectName(), NEWFLICON(FluentIcon, SETTING), "设置", this,
-                             SLOT(settingViewClicked()), true, NavigationItemPosition::BOTTOM);
+                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::BOTTOM);
 
     m_aboutView->setObjectName("aboutView");
     m_stackWidget->addWidget(m_aboutView);
     m_naviInterface->addItem(m_aboutView->objectName(), NEWFLICON(FluentIcon, INFO), "关于", this,
-                             SLOT(aboutViewClicked()), true, NavigationItemPosition::BOTTOM);
-
-    m_naviInterface->setDefaultRouteKey(m_homeView->objectName());
+                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::BOTTOM);
 
     connect(m_stackWidget, &StackedWidget::currentWidgetChanged, this,
             [this](QWidget *w) { m_naviInterface->setCurrentItem(w->objectName()); });
+    m_naviInterface->setDefaultRouteKey(m_homeView->objectName());
     m_naviInterface->setCurrentItem(m_homeView->objectName());
     m_stackWidget->setCurrentIndex(0);
 }
@@ -200,12 +201,6 @@ void MainWindow::resizeEvent(QResizeEvent *event)
     m_titleBar->resize(width() - titleBarIndent(), m_titleBar->height());
 }
 
-void MainWindow::switchTo(QWidget *widget, bool triggerByUser)
-{
-    qDebug() << __FUNCTION__ << __LINE__;
-    m_stackWidget->setCurrentWidget(widget, !triggerByUser);
-}
-
 void MainWindow::slotLogin()
 {
     initMainPage();
@@ -217,6 +212,7 @@ void MainWindow::slotLogin()
 
 void MainWindow::slotLogout()
 {
+    qfReloadHomeProjectsAtShow = true;
     m_mainStackedWidget->setCurrentWidget(m_loginView);
     m_mainStackedWidget->removeWidget(m_mainWidget);
     delete m_mainWidget;
@@ -231,37 +227,12 @@ void MainWindow::slotCancelLogin()
     exit(0);
 }
 
-void MainWindow::homeViewClicked()
-{
-    switchTo(m_homeView);
-}
-
-void MainWindow::projectViewClicked()
-{
-    switchTo(m_projectView);
-}
-
-void MainWindow::expertViewClicked()
+void MainWindow::slotNaviItemClicked()
 {
-    switchTo(m_expertManageView);
-}
-
-void MainWindow::aboutViewClicked()
-{
-    switchTo(m_aboutView);
-}
-
-void MainWindow::dataViewClicked()
-{
-    switchTo(m_evaluateView);
-}
-
-void MainWindow::settingViewClicked()
-{
-    switchTo(m_settingView);
-}
-
-void MainWindow::userViewClicked()
-{
-    switchTo(m_userView);
+    for (int i = 0; i < m_stackWidget->view()->count(); i++) {
+        QWidget *w = m_stackWidget->view()->widget(i);
+        if (w->objectName() == sender()->property("routeKey")) {
+            m_stackWidget->setCurrentWidget(w, false);
+        }
+    }
 }

+ 2 - 9
QFD/view/MainWindow.h

@@ -62,20 +62,13 @@ private:
 
     void resizeEvent(QResizeEvent *event) override;
 
-    void switchTo(QWidget *widget, bool triggerByUser = true);
-
 private slots:
     void slotLogin();
     void slotLogout();
 
     void slotCancelLogin();
-    void homeViewClicked();
-    void projectViewClicked();
-    void expertViewClicked();
-    void aboutViewClicked();
-    void dataViewClicked();
-    void settingViewClicked();
-    void userViewClicked();
+
+    void slotNaviItemClicked();
 
 private:
     CustomTitleBar *m_titleBar = 0;