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