/ src / qt / qvalidatedlineedit.h
qvalidatedlineedit.h
 1  // Copyright (c) 2011-2022 The Bitcoin Core developers
 2  // Distributed under the MIT software license, see the accompanying
 3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
 4  
 5  #ifndef BITCOIN_QT_QVALIDATEDLINEEDIT_H
 6  #define BITCOIN_QT_QVALIDATEDLINEEDIT_H
 7  
 8  #include <QLineEdit>
 9  
10  /** Line edit that can be marked as "invalid" to show input validation feedback. When marked as invalid,
11     it will get a red background until it is focused.
12   */
13  class QValidatedLineEdit : public QLineEdit
14  {
15      Q_OBJECT
16  
17  public:
18      explicit QValidatedLineEdit(QWidget *parent);
19      void clear();
20      void setCheckValidator(const QValidator *v);
21      bool isValid();
22  
23  protected:
24      void focusInEvent(QFocusEvent *evt) override;
25      void focusOutEvent(QFocusEvent *evt) override;
26  
27  private:
28      bool valid{true};
29      const QValidator* checkValidator{nullptr};
30  
31  public Q_SLOTS:
32      void setText(const QString&);
33      void setValid(bool valid);
34      void setEnabled(bool enabled);
35  
36  Q_SIGNALS:
37      void validationDidChange(QValidatedLineEdit *validatedLineEdit);
38  
39  private Q_SLOTS:
40      void markValid();
41      void checkValidity();
42  };
43  
44  #endif // BITCOIN_QT_QVALIDATEDLINEEDIT_H