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