MainWindow.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 StandardTitleBar;
  9. class HomeView;
  10. class ProjectView;
  11. class ExpertView;
  12. class DataView;
  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 switchTo(QWidget *widget, bool triggerByUser = true);
  46. private slots:
  47. void homeViewClicked();
  48. void loginViewClicked();
  49. void projectViewClicked();
  50. void expertViewClicked();
  51. void aboutViewClicked();
  52. void dataViewClicked();
  53. private:
  54. StandardTitleBar *m_titleBar;
  55. QHBoxLayout *m_hBoxLayout;
  56. QHBoxLayout *m_widgetLayout;
  57. StackedWidget *m_stackWidget;
  58. NavigationInterface *m_naviInterface;
  59. HomeView *m_homeView;
  60. ProjectView *m_projectView;
  61. ExpertView *m_expertView;
  62. DataView *m_dataView;
  63. LoginView *m_loginView;
  64. AboutView *m_aboutView;
  65. };
  66. #endif // MAINWINDOW_H