QInfoListWidget.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. #ifndef QINFOLISTWIDGET_H
  2. #define QINFOLISTWIDGET_H
  3. #include <QWidget>
  4. #include <QListWidget>
  5. #include <QWheelEvent>
  6. enum InfoType {
  7. Info,
  8. Event,
  9. Warning,
  10. Error,
  11. Succeed
  12. };
  13. enum LevelType {
  14. None,
  15. Lower,
  16. Normal,
  17. Higher
  18. };
  19. class QInfoListWidget;
  20. class QBaseListWidgetItem : public QListWidgetItem
  21. {
  22. public:
  23. QBaseListWidgetItem(const QString &text, InfoType it, LevelType lt);
  24. virtual ~QBaseListWidgetItem() {}
  25. void AppentToWidget(QInfoListWidget* container, bool insertFront = true);
  26. protected:
  27. virtual QColor FrontColor() const;
  28. virtual QColor BackgroundColor() const;
  29. InfoType infoType;
  30. LevelType levelType;
  31. };
  32. class QInfoListWidgetItem : public QBaseListWidgetItem
  33. {
  34. public:
  35. QInfoListWidgetItem(const QString &text, LevelType lt = None);
  36. virtual ~QInfoListWidgetItem() {}
  37. };
  38. class QWarnListWidgetItem : public QBaseListWidgetItem
  39. {
  40. public:
  41. QWarnListWidgetItem(const QString& text, LevelType lt = None)
  42. :QBaseListWidgetItem(text, InfoType::Warning, lt) {}
  43. virtual ~QWarnListWidgetItem() {}
  44. private:
  45. QColor FrontColor() const;
  46. };
  47. class QLightWarnListWidgetItem : public QBaseListWidgetItem
  48. {
  49. public:
  50. QLightWarnListWidgetItem(const QString& text, LevelType lt = None)
  51. :QBaseListWidgetItem(text, InfoType::Warning, lt) {}
  52. virtual ~QLightWarnListWidgetItem() {}
  53. private:
  54. QColor FrontColor() const;
  55. QColor BackgroundColor() const;
  56. };
  57. class QErrorListWidgetItem : public QBaseListWidgetItem
  58. {
  59. public:
  60. QErrorListWidgetItem(const QString &text, LevelType lt = None)
  61. :QBaseListWidgetItem(text, InfoType::Error, lt){}
  62. virtual ~QErrorListWidgetItem() {}
  63. private:
  64. QColor FrontColor() const;
  65. };
  66. class QLightErrorListWidgetItem : public QBaseListWidgetItem
  67. {
  68. public:
  69. QLightErrorListWidgetItem(const QString &text, LevelType lt = None)
  70. :QBaseListWidgetItem(text, InfoType::Error, lt){}
  71. virtual ~QLightErrorListWidgetItem() {}
  72. private:
  73. QColor FrontColor() const;
  74. QColor BackgroundColor() const;
  75. };
  76. class QTipErrorListWidgetItem : public QBaseListWidgetItem
  77. {
  78. public:
  79. QTipErrorListWidgetItem(const QString &text, LevelType lt = None)
  80. :QBaseListWidgetItem(text, InfoType::Error, lt){}
  81. virtual ~QTipErrorListWidgetItem() {}
  82. private:
  83. QColor FrontColor() const;
  84. QColor BackgroundColor() const;
  85. };
  86. class QTipListWidgetItem : public QBaseListWidgetItem
  87. {
  88. public:
  89. QTipListWidgetItem(const QString &text)
  90. :QBaseListWidgetItem(text, InfoType::Error, Higher){
  91. setTextAlignment(Qt::AlignCenter);
  92. }
  93. virtual ~QTipListWidgetItem() {}
  94. private:
  95. QColor FrontColor() const;
  96. QColor BackgroundColor() const;
  97. };
  98. class QConsoleListWidgetItem : public QBaseListWidgetItem
  99. {
  100. public:
  101. QConsoleListWidgetItem(const QString &text)
  102. :QBaseListWidgetItem(text, InfoType::Info, None)
  103. {
  104. }
  105. virtual ~QConsoleListWidgetItem() {}
  106. private:
  107. QColor FrontColor() const;
  108. QColor BackgroundColor() const;
  109. };
  110. class QInfoListWidget : public QListWidget
  111. {
  112. Q_OBJECT
  113. public:
  114. QInfoListWidget(QWidget* parent = nullptr);
  115. virtual ~QInfoListWidget() {}
  116. virtual void PostInit() { qDebug("parent::PostInit"); }
  117. virtual void RemoveDuplicateItem()
  118. {
  119. }
  120. protected:
  121. void Init();
  122. void WheelEvent(QWheelEvent* event);
  123. };
  124. class QLeftInfoListWidget : public QInfoListWidget
  125. {
  126. Q_OBJECT
  127. public:
  128. QLeftInfoListWidget(QWidget* parent = nullptr)
  129. :QInfoListWidget(parent){PostInit();}
  130. virtual ~QLeftInfoListWidget() {}
  131. virtual void PostInit() override;
  132. };
  133. class QRightInfoListWidget : public QInfoListWidget
  134. {
  135. Q_OBJECT
  136. public:
  137. QRightInfoListWidget(QWidget* parent = nullptr)
  138. :QInfoListWidget(parent){PostInit();}
  139. virtual ~QRightInfoListWidget() {}
  140. virtual void PostInit() override;
  141. };
  142. #endif // QINFOLISTWIDGET_H