#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include class PopUpAniStackedWidget; class QHBoxLayout; class NavigationInterface; class CustomTitleBar; class HomeView; class ProjectView; class ExpertManageView; class EvaluateView; class LoginView; class UserView; class AboutView; class SettingView; class StackedWidget : public QFrame { Q_OBJECT public: StackedWidget(QWidget *parent = nullptr); void addWidget(QWidget *widget); void setCurrentWidget(QWidget *widget, bool popOut = false); void setCurrentIndex(int index, bool popOut = false); PopUpAniStackedWidget *view() const; signals: void currentWidgetChanged(QWidget *); private: QHBoxLayout *m_hBoxLayout; PopUpAniStackedWidget *m_view; }; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: void initialize(); void initWindow(); void initLayout(); void initNavigation(); void connectSignalsAndSlots(); void setNaviInterfaceHidden(bool hidden); int titleBarIndent() const; void resizeEvent(QResizeEvent *event) override; void showMainWidget(); 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(); private: CustomTitleBar *m_titleBar; QWidget *m_mainWidget; QHBoxLayout *m_hBoxLayout; QHBoxLayout *m_widgetLayout; StackedWidget *m_stackWidget; NavigationInterface *m_naviInterface; HomeView *m_homeView; ProjectView *m_projectView; ExpertManageView *m_expertManageView; EvaluateView *m_evaluateView; LoginView *m_loginView; AboutView *m_aboutView; SettingView *m_settingView; UserView *m_userView; }; #endif // MAINWINDOW_H