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