123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef PATTERNCODELOCK_H
- #define PATTERNCODELOCK_H
- #include <QWidget>
- #include <QTimer>
- /**
- * @brief 图案密码锁,手机锁屏界面
- */
- class PatternCodeLockWidget : public QWidget
- {
- Q_OBJECT
- public:
- PatternCodeLockWidget(int numberOfEachRowAndCol, QWidget *parent = nullptr);
- ~PatternCodeLockWidget() override;
- void reset();
- int getNumberOfEachRowAndCol() const;
- void setNumberOfEachRowAndCol(int newNumberOfEachRowAndCol);
- signals:
- void setPassword(QString);
- protected:
- void paintEvent(QPaintEvent *event) override;
- void resizeEvent(QResizeEvent *event) override;
- void mouseMoveEvent(QMouseEvent *event) override;
- void mousePressEvent(QMouseEvent *event) override;
- void mouseDoubleClickEvent(QMouseEvent *event) override;
- private:
- void onHoverTimer();
- QString getPassWord();
- enum class CircularState
- {
- normal, //正常
- hoverOnInnerSamrtCircular //鼠标悬浮在中间的小圆上面
- };
- enum class PatternCodeLockState
- {
- notSet,
- setting,
- setted_valid, //有效
- setted_invalid //无效
- };
- int numberOfEachRowAndCol;
- PatternCodeLockState PatternCodeLockSetUpState { PatternCodeLockState::notSet };
- QList<CircularState> circularStateList;
- QList<QRect> smartCircularRectList;
- bool isUpdateSmartCircularRect { true };
- QTimer hoverTimer;
- int radiu;
- int lastHoverIndex { -1 };
- int currentchangeLength;
- bool mouseInSomeSmartCircular { false };
- QList<int> setList;
- QPoint settingMousPos;
- };
- #endif // PATTERNCODELOCK_H
|