LineEdit.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #ifndef LINEEDIT_H
  2. #define LINEEDIT_H
  3. #include <QHBoxLayout>
  4. #include <QLineEdit>
  5. #include <QPlainTextEdit>
  6. #include <QTextEdit>
  7. #include <QToolButton>
  8. #include "Common/Icon.h"
  9. class SmoothScroll;
  10. class LineEditButton : public QToolButton
  11. {
  12. Q_OBJECT
  13. public:
  14. LineEditButton(FluentIconBase *ficon, QWidget *parent = nullptr);
  15. // QWidget interface
  16. protected:
  17. void paintEvent(QPaintEvent *event) override;
  18. private:
  19. QScopedPointer<FluentIconBase> m_ficon;
  20. };
  21. class LineEdit : public QLineEdit
  22. {
  23. Q_OBJECT
  24. public:
  25. explicit LineEdit(QWidget *parent = nullptr);
  26. bool isClearButtonEnabled() const;
  27. void setIsClearButtonEnabled(bool enable);
  28. QHBoxLayout *hBoxLayout() const;
  29. LineEditButton *clearButton() const;
  30. signals:
  31. private slots:
  32. void onTextChanged(const QString &text);
  33. // QWidget interface
  34. protected:
  35. void focusInEvent(QFocusEvent *event) override;
  36. void focusOutEvent(QFocusEvent *event) override;
  37. void paintEvent(QPaintEvent *event) override;
  38. void contextMenuEvent(QContextMenuEvent *event) override;
  39. private:
  40. QHBoxLayout *m_hBoxLayout;
  41. bool m_isClearButtonEnabled;
  42. LineEditButton *m_clearButton;
  43. };
  44. class SearchLineEdit : public LineEdit
  45. {
  46. Q_OBJECT
  47. public:
  48. SearchLineEdit(QWidget *parent = nullptr);
  49. signals:
  50. void searchSignal(const QString &);
  51. void clearSignal();
  52. protected slots:
  53. void search();
  54. private:
  55. LineEditButton *m_searchButton;
  56. };
  57. class PasswordLineEdit : public LineEdit
  58. {
  59. Q_OBJECT
  60. public:
  61. PasswordLineEdit(QWidget *parent = nullptr);
  62. signals:
  63. void echoModeChanged();
  64. void clearSignal();
  65. protected:
  66. void switchEchoMode();
  67. private:
  68. LineEditButton *m_echoButton;
  69. };
  70. class TextEdit : public QTextEdit
  71. {
  72. Q_OBJECT
  73. public:
  74. TextEdit(QWidget *parent = nullptr);
  75. // QWidget interface
  76. protected:
  77. void wheelEvent(QWheelEvent *event) override;
  78. void contextMenuEvent(QContextMenuEvent *event) override;
  79. private:
  80. SmoothScroll *m_verticalSmoothScroll;
  81. SmoothScroll *m_horizonSmoothScroll;
  82. };
  83. class PlainTextEdit : public QPlainTextEdit
  84. {
  85. Q_OBJECT
  86. public:
  87. PlainTextEdit(QWidget *parent = nullptr);
  88. protected:
  89. void wheelEvent(QWheelEvent *event) override;
  90. void contextMenuEvent(QContextMenuEvent *event) override;
  91. private:
  92. SmoothScroll *m_verticalSmoothScroll;
  93. SmoothScroll *m_horizonSmoothScroll;
  94. };
  95. #endif // LINEEDIT_H