#ifndef DESKDOCKWIDGET_H
#define DESKDOCKWIDGET_H
#include "qtinclude.h"
class FloatingWidget : public QWidget
{
Q_OBJECT
public:
enum FloatingFeature
{
NoArea = 0x0,
TopArea = 0x1,
BottomArea = 0x2,
LeftArea = 0x4,
RightArea = 0x8,
AllArea = 0xf,
};
public:
explicit FloatingWidget(FloatingFeature D, QWidget * parent = nullptr, Qt::WindowFlags flags = 0);
protected:
virtual void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE;
virtual void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE;
virtual void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE;
virtual void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE;
virtual void enterEvent(QEvent *) Q_DECL_OVERRIDE;
virtual void leaveEvent (QEvent *) Q_DECL_OVERRIDE;
QSize sizeHint() const{ return QSize(128, 142);}
private slots:
void setDirection(FloatingFeature D);
void HideDockWidget();
void ShowDockWidget();
private:
void MoveWindow(const QPoint & start, const QPoint & end, unsigned int step = 5);
private:
bool m_IsVisible = true;
FloatingFeature m_feature;
QPoint m_dragPosition;
QPoint m_RecoverPosition;
QTimer * m_timer = nullptr;
};
#endif // DESKDOCKWIDGET_H
#include "deskdockwidget.h"
#include <QtCore/QtMath>
#include <QtCore/QPropertyAnimation>
#include <QtWidgets/QDesktopWidget>
#define TEST_BIT(a, b) a & b
#def