navprogress.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef NAVPROGRESS_H
  2. #define NAVPROGRESS_H
  3. #include <QWidget>
  4. #include <QPainter>
  5. #include <QPen>
  6. #include <QFont>
  7. #include <QRect>
  8. #include <QString>
  9. #include <QVector>
  10. #include <QVBoxLayout>
  11. #include <QPushButton>
  12. #include <QApplication>
  13. #include <QDebug>
  14. #include <QTimer>
  15. // 定义导航样式枚举
  16. enum NavStyle {
  17. NavStyle_JD,
  18. };
  19. class NavProgress : public QWidget {
  20. Q_OBJECT
  21. public:
  22. NavProgress(QWidget *parent = nullptr);
  23. // 设置导航样式
  24. void setNavStyle(NavStyle style);
  25. // 设置最大步骤数
  26. void setMaxStep(int step);
  27. // 设置顶部信息
  28. void setTopInfo(const QVector<QString>& info);
  29. // 设置第一个圆为绿色
  30. void setFirstCircleGreen(bool green);
  31. // 开始或停止第一个空心圆闪烁
  32. void setFirstCircleBlinking(bool blinking);
  33. // 获取每个圆的颜色
  34. QVector<QColor> getCircleColors();
  35. // 设置状态
  36. void setState(int newState);
  37. protected:
  38. void paintEvent(QPaintEvent *) override;
  39. void drawBg_JD(QPainter *painter);
  40. void drawText_JD(QPainter *painter);
  41. // 其他样式的绘制函数,这里简单占位
  42. // void drawCurrentBg_JD(QPainter *painter);
  43. // void drawCurrentText_JD(QPainter *painter);
  44. private slots:
  45. void toggleBlinkColors();
  46. private:
  47. NavStyle navStyle;
  48. int maxStep;
  49. int state;
  50. QColor background;
  51. QColor foreground;
  52. QVector<QString> topInfo;
  53. bool firstCircleGreen;
  54. bool firstCircleBlinking;
  55. bool secondCircleBlinking;
  56. bool secondCircleGreen;
  57. bool thridCircleBlinking;
  58. bool thridCircleGreen;
  59. QColor blinkColor;
  60. QColor secondBlinkColor;
  61. QTimer *blinkTimer;
  62. };
  63. #endif // NAVPROGRESS_H