DockTitleBarWidget.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #if !defined(Q_MOC_RUN)
  10. #include "EditorCommonAPI.h"
  11. #include <QAbstractButton>
  12. #include <QWidget>
  13. #include <QPainter>
  14. #include <QDockWidget>
  15. #include <QBoxLayout>
  16. #include <vector>
  17. #endif
  18. class EDITOR_COMMON_API CDockTitleBarWidget
  19. : public QWidget
  20. {
  21. Q_OBJECT
  22. public:
  23. CDockTitleBarWidget(QDockWidget* dockWidget);
  24. QSize sizeHint() const override
  25. {
  26. QFontMetrics fm(font());
  27. return QSize(40, fm.height() + 8);
  28. }
  29. void AddCustomButton(const QIcon& icon, const char* tooltip, int id);
  30. signals:
  31. void SignalCustomButtonPressed(int id);
  32. private slots:
  33. void OnCloseButtonPressed();
  34. void OnFloatButtonPressed();
  35. void OnCustomButtonPressed();
  36. private:
  37. QDockWidget* m_dockWidget;
  38. QBoxLayout* m_layout;
  39. QBoxLayout* m_buttonLayout;
  40. QAbstractButton* m_floatButton;
  41. QAbstractButton* m_closeButton;
  42. struct SCustomButton
  43. {
  44. int id;
  45. QAbstractButton* button;
  46. };
  47. AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
  48. std::vector<SCustomButton> m_customButtons;
  49. AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
  50. };