MainWindow.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QFrame>
  4. #include <QMainWindow>
  5. class PopUpAniStackedWidget;
  6. class QHBoxLayout;
  7. class NavigationInterface;
  8. class CustomTitleBar;
  9. class HomeView;
  10. class ProjectView;
  11. class ExpertManageView;
  12. class EvaluateView;
  13. class LoginView;
  14. class UserView;
  15. class AboutView;
  16. class SettingView;
  17. class StackedWidget : public QFrame
  18. {
  19. Q_OBJECT
  20. public:
  21. StackedWidget(QWidget *parent = nullptr);
  22. void addWidget(QWidget *widget);
  23. void setCurrentWidget(QWidget *widget, bool popOut = false);
  24. void setCurrentIndex(int index, bool popOut = false);
  25. PopUpAniStackedWidget *view() const;
  26. signals:
  27. void currentWidgetChanged(QWidget *);
  28. private:
  29. QHBoxLayout *m_hBoxLayout;
  30. PopUpAniStackedWidget *m_view;
  31. };
  32. class MainWindow : public QMainWindow
  33. {
  34. Q_OBJECT
  35. public:
  36. MainWindow(QWidget *parent = nullptr);
  37. ~MainWindow();
  38. private:
  39. void initialize();
  40. void initWindow();
  41. void initLayout();
  42. void initNavigation();
  43. void connectSignalsAndSlots();
  44. void setNaviInterfaceHidden(bool hidden);
  45. int titleBarIndent() const;
  46. void resizeEvent(QResizeEvent *event) override;
  47. void showMainWidget();
  48. void switchTo(QWidget *widget, bool triggerByUser = true);
  49. private slots:
  50. void slotLogin();
  51. void slotCancelLogin();
  52. void homeViewClicked();
  53. void projectViewClicked();
  54. void expertViewClicked();
  55. void aboutViewClicked();
  56. void dataViewClicked();
  57. void settingViewClicked();
  58. void userViewClicked();
  59. private:
  60. CustomTitleBar *m_titleBar;
  61. QWidget *m_mainWidget;
  62. QHBoxLayout *m_hBoxLayout;
  63. QHBoxLayout *m_widgetLayout;
  64. StackedWidget *m_stackWidget;
  65. NavigationInterface *m_naviInterface;
  66. HomeView *m_homeView;
  67. ProjectView *m_projectView;
  68. ExpertManageView *m_expertManageView;
  69. EvaluateView *m_evaluateView;
  70. LoginView *m_loginView;
  71. AboutView *m_aboutView;
  72. SettingView *m_settingView;
  73. UserView *m_userView;
  74. };
  75. #endif // MAINWINDOW_H