#pragma once #include #include class FrameTitleBar; class FramelessDelegate : public QObject { Q_OBJECT public: ~FramelessDelegate() override; static FramelessDelegate* Create(QWidget* paranet); void SetTitleBar(FrameTitleBar* titleBar); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) virtual bool nativeEvent(const QByteArray& eventType, void* message, long* result); #else virtual bool nativeEvent(const QByteArray& eventType, void* message, qintptr* result); #endif protected: FramelessDelegate(QWidget* parent); bool eventFilter(QObject* watched, QEvent* event) override; virtual void OnShow() {} virtual void OnHide() {} virtual void OnClose() {} virtual void OnScreenChangeInternaal() {} virtual void AddMoveBar(QWidget* moveWidget) {} virtual void RemoveMoveBar(QWidget* moveWidget); protected: QWidget* mainWidget_{ nullptr }; FrameTitleBar* titleBar_{ nullptr }; QWidgetList moveBars_; QMargins margins_; QMargins frames_; bool justMaximized_{ false }; bool isFirstShow_{ true }; };