MainWindow.h 1.9 KB

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