qvalidatedlineedit.h raw

   1  // Copyright (c) 2011-present 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
  45