MainWindow.h 1.8 KB

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