123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef PATTERNCODELOCK_H
- #define PATTERNCODELOCK_H
- #include <QWidget>
- #include <QTimer>
- 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
|