framelessbase.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef FRAMELESSBASE_H
  2. #define FRAMELESSBASE_H
  3. #include <QWidget>
  4. #include <QMainWindow>
  5. #include <QMenuBar>
  6. #include <QMessageBox>
  7. class QVBoxLayout;
  8. namespace QWK {
  9. class WidgetWindowAgent;
  10. class StyleAgent;
  11. } // namespace QWK
  12. class TMainWindow : public QMainWindow
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit TMainWindow(QWidget *parent = nullptr);
  17. ~TMainWindow() override {}
  18. protected:
  19. bool event(QEvent *event) override;
  20. private:
  21. void installWindowAgent();
  22. QWK::WidgetWindowAgent *windowAgent;
  23. };
  24. class TWidget : public QWidget
  25. {
  26. Q_OBJECT
  27. public:
  28. explicit TWidget(QWidget *parent = nullptr);
  29. ~TWidget() override {}
  30. QVBoxLayout *mainLayout() const { return m_mainLayout; }
  31. QWidget *menuWidget() const; // 获取当前标题栏
  32. void setMenuWidget(QWidget *widget); // 设置新的标题栏
  33. protected:
  34. bool event(QEvent *event) override;
  35. private:
  36. void installWindowAgent();
  37. QWK::WidgetWindowAgent *windowAgent;
  38. QWidget *m_menuWidget = nullptr; // 存储当前标题栏
  39. QVBoxLayout *m_mainLayout = nullptr; // 主布局
  40. };
  41. #endif // FRAMELESSBASE_H