AlmondMenuWidget.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef ALMONDMENUWIDGET_H
  2. #define ALMONDMENUWIDGET_H
  3. #include <QFrame>
  4. #include <QList>
  5. #include <QStackedWidget>
  6. #include <QPushButton>
  7. #include <QStateMachine>
  8. class AlmondSubMenu :
  9. public QObject
  10. {
  11. Q_OBJECT
  12. QWidget* w;
  13. public:
  14. AlmondSubMenu(QWidget* widget);
  15. QWidget* widget(void);
  16. signals:
  17. void accepted(void);
  18. void cancelled(void);
  19. };
  20. class AlmondMenuWidget :
  21. public QFrame
  22. {
  23. Q_OBJECT
  24. QWidget* mainMenu;
  25. QWidget* rightWidget;
  26. QWidget* leftWidget;
  27. QPushButton* rightOK;
  28. QPushButton* rightCancel;
  29. QStackedWidget* subMenuContainer;
  30. QList<AlmondSubMenu*> subMenus;
  31. QStateMachine* states;
  32. public:
  33. AlmondMenuWidget(QWidget* parent = nullptr);
  34. ~AlmondMenuWidget(void);
  35. void setMainMenu(QWidget* mainMenu);
  36. AlmondSubMenu* addSubMenu(QWidget* subMenu);
  37. virtual QSize sizeHint(void) const override;
  38. virtual QSize minimumSizeHint(void) const override;
  39. protected:
  40. virtual void resizeEvent(QResizeEvent* event) override;
  41. protected slots:
  42. void clickedRightOK(void);
  43. void clickedRightCancel(void);
  44. public slots:
  45. void showMainMenu(void);
  46. void showSubMenu(int index);
  47. void showSubMenu(void);
  48. signals:
  49. void submenuOK(int index);
  50. void submenuCancel(int index);
  51. void showLeft();
  52. void showRight();
  53. };
  54. #endif // ALMONDMENUWIDGET_H