qt-display.hpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <QWidget>
  3. #include <obs.hpp>
  4. #define GREY_COLOR_BACKGROUND 0xFF4C4C4C
  5. class OBSQTDisplay : public QWidget {
  6. Q_OBJECT
  7. Q_PROPERTY(QColor displayBackgroundColor MEMBER backgroundColor READ
  8. GetDisplayBackgroundColor WRITE
  9. SetDisplayBackgroundColor)
  10. OBSDisplay display;
  11. virtual void paintEvent(QPaintEvent *event) override;
  12. virtual void moveEvent(QMoveEvent *event) override;
  13. virtual void resizeEvent(QResizeEvent *event) override;
  14. #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
  15. virtual bool nativeEvent(const QByteArray &eventType, void *message,
  16. qintptr *result) override;
  17. #else
  18. virtual bool nativeEvent(const QByteArray &eventType, void *message,
  19. long *result) override;
  20. #endif
  21. signals:
  22. void DisplayCreated(OBSQTDisplay *window);
  23. void DisplayResized();
  24. public:
  25. OBSQTDisplay(QWidget *parent = nullptr,
  26. Qt::WindowFlags flags = Qt::WindowFlags());
  27. ~OBSQTDisplay() { display = nullptr; }
  28. virtual QPaintEngine *paintEngine() const override;
  29. inline obs_display_t *GetDisplay() const { return display; }
  30. uint32_t backgroundColor = GREY_COLOR_BACKGROUND;
  31. QColor GetDisplayBackgroundColor() const;
  32. void SetDisplayBackgroundColor(const QColor &color);
  33. void UpdateDisplayBackgroundColor();
  34. void CreateDisplay(bool force = false);
  35. void OnMove();
  36. void OnDisplayChange();
  37. };