#ifndef FRAMELESSHANDLER_H #define FRAMELESSHANDLER_H #include #include // This concept takes from Qt's QWidgetResizeHandler, but it's not // a public Qt API so we cannot relay on it... QT_BEGIN_NAMESPACE class QMouseEvent; QT_END_NAMESPACE class FramelessHandler : public QObject { Q_OBJECT public: explicit FramelessHandler(QWidget *parent = nullptr); protected: bool eventFilter(QObject *o, QEvent *event) override; void mouseMoveEvent(QMouseEvent *evt); void setMouseCursor(Qt::Edges edge); bool startSystemResize(Qt::Edges edges); bool startSystemMove(); private: QWidget * m_parentWidget = nullptr; QPoint m_oldMousePos; bool m_clickedOnWindow = false; static constexpr int m_borderWidth = 8; }; #endif // FRAMELESSHANDLER_H