windowbar.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware)
  2. // Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao)
  3. // SPDX-License-Identifier: Apache-2.0
  4. #ifndef WINDOWBAR_H
  5. #define WINDOWBAR_H
  6. #include <QFrame>
  7. #include <QAbstractButton>
  8. #include <QMenuBar>
  9. #include <QLabel>
  10. namespace QWK {
  11. class WindowBarPrivate;
  12. class WindowBar : public QFrame {
  13. Q_OBJECT
  14. Q_DECLARE_PRIVATE(WindowBar)
  15. public:
  16. explicit WindowBar(QWidget *parent = nullptr);
  17. ~WindowBar();
  18. public:
  19. QMenuBar *menuBar() const;
  20. QLabel *titleLabel() const;
  21. QAbstractButton *iconButton() const;
  22. QAbstractButton *pinButton() const;
  23. QAbstractButton *minButton() const;
  24. QAbstractButton *maxButton() const;
  25. QAbstractButton *closeButton() const;
  26. void setMenuBar(QMenuBar *menuBar);
  27. void setTitleLabel(QLabel *label);
  28. void setIconButton(QAbstractButton *btn);
  29. void setPinButton(QAbstractButton *btn);
  30. void setMinButton(QAbstractButton *btn);
  31. void setMaxButton(QAbstractButton *btn);
  32. void setCloseButton(QAbstractButton *btn);
  33. QMenuBar *takeMenuBar();
  34. QLabel *takeTitleLabel();
  35. QAbstractButton *takeIconButton();
  36. QAbstractButton *takePinButton();
  37. QAbstractButton *takeMinButton();
  38. QAbstractButton *takeMaxButton();
  39. QAbstractButton *takeCloseButton();
  40. QWidget *hostWidget() const;
  41. void setHostWidget(QWidget *w);
  42. bool titleFollowWindow() const;
  43. void setTitleFollowWindow(bool value);
  44. bool iconFollowWindow() const;
  45. void setIconFollowWindow(bool value);
  46. Q_SIGNALS:
  47. void pinRequested(bool pin = false);
  48. void minimizeRequested();
  49. void maximizeRequested(bool max = false);
  50. void closeRequested();
  51. protected:
  52. bool eventFilter(QObject *obj, QEvent *event) override;
  53. virtual void titleChanged(const QString &text);
  54. virtual void iconChanged(const QIcon &icon);
  55. protected:
  56. WindowBar(WindowBarPrivate &d, QWidget *parent = nullptr);
  57. QScopedPointer<WindowBarPrivate> d_ptr;
  58. };
  59. }
  60. #endif // WINDOWBAR_H