qvaluecombobox.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_QVALUECOMBOBOX_H
6 #define BITCOIN_QT_QVALUECOMBOBOX_H
7
8 #include <QComboBox>
9 #include <QVariant>
10
11 /* QComboBox that can be used with QDataWidgetMapper to select ordinal values from a model. */
12 class QValueComboBox : public QComboBox
13 {
14 Q_OBJECT
15
16 Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged USER true)
17
18 public:
19 explicit QValueComboBox(QWidget *parent = nullptr);
20
21 QVariant value() const;
22 void setValue(const QVariant &value);
23
24 /** Specify model role to use as ordinal value (defaults to Qt::UserRole) */
25 void setRole(int role);
26
27 Q_SIGNALS:
28 void valueChanged();
29
30 private:
31 int role{Qt::UserRole};
32
33 private Q_SLOTS:
34 void handleSelectionChanged(int idx);
35 };
36
37 #endif // BITCOIN_QT_QVALUECOMBOBOX_H
38