11 #include <QApplication>    12 #include <QAbstractSpinBox>    13 #include <QHBoxLayout>    26         QAbstractSpinBox(parent),
    30         setAlignment(Qt::AlignRight);
    35     QValidator::State 
validate(QString &text, 
int &pos)
 const    38             return QValidator::Intermediate;
    42         return valid ? QValidator::Intermediate : QValidator::Invalid;
    45     void fixup(QString &input)
 const    52             lineEdit()->setText(input);
    58         return parse(text(), valid_out);
   100             const QFontMetrics fm(fontMetrics());
   101             int h = lineEdit()->minimumSizeHint().height();
   105             QStyleOptionSpinBox opt;
   106             initStyleOption(&opt);
   109             opt.rect.setSize(hint + extra);
   110             extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,
   111                                                     QStyle::SC_SpinBoxEditField, 
this).size();
   113             opt.rect.setSize(hint + extra);
   114             extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,
   115                                                     QStyle::SC_SpinBoxEditField, 
this).size();
   122                                     .expandedTo(QApplication::globalStrut());
   148         return valid ? val : 0;
   154         if (
event->type() == QEvent::KeyPress || 
event->type() == QEvent::KeyRelease)
   156             QKeyEvent *keyEvent = 
static_cast<QKeyEvent *
>(
event);
   157             if (keyEvent->key() == Qt::Key_Comma)
   160                 QKeyEvent periodKeyEvent(
event->type(), Qt::Key_Period, keyEvent->modifiers(), 
".", keyEvent->isAutoRepeat(), keyEvent->count());
   161                 return QAbstractSpinBox::event(&periodKeyEvent);
   164         return QAbstractSpinBox::event(
event);
   171         if (text().isEmpty()) 
   172             return StepUpEnabled;
   180                 rv |= StepDownEnabled;
   191 #include <qt/bitcoinamountfield.moc>   198     amount->setLocale(QLocale::c());
   199     amount->installEventFilter(
this);
   200     amount->setMaximumWidth(240);
   202     QHBoxLayout *layout = 
new QHBoxLayout(
this);
   203     layout->addWidget(
amount);
   206     layout->addWidget(
unit);
   207     layout->addStretch(1);
   208     layout->setContentsMargins(0,0,0,0);
   212     setFocusPolicy(Qt::TabFocus);
   226     unit->setCurrentIndex(0);
   231     amount->setEnabled(fEnabled);
   232     unit->setEnabled(fEnabled);
   246         amount->setStyleSheet(
"");
   253     if (event->type() == QEvent::FocusIn)
   258     return QWidget::eventFilter(
object, event);
   263     QWidget::setTabOrder(prev, 
amount);
   280     amount->setReadOnly(fReadOnly);
   286     unit->setToolTip(
unit->itemData(idx, Qt::ToolTipRole).toString());
 bool validate()
Perform input validation, mark field as invalid if entered value is not valid. 
 
Bitcoin unit definitions. 
 
void setReadOnly(bool fReadOnly)
Make read-only. 
 
QSpinBox that uses fixed-point numbers internally and uses our own formatting/parsing functions...
 
AmountSpinBox(QWidget *parent)
 
CAmount value(bool *valid_out=0) const
 
StepEnabled stepEnabled() const
 
QWidget * setupTabChain(QWidget *prev)
Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907), in these cases we have to set it up manually. 
 
void setDisplayUnit(int unit)
 
QSize minimumSizeHint() const
 
bool eventFilter(QObject *object, QEvent *event)
Intercept focus-in event and ',' key presses. 
 
QSize cachedMinimumSizeHint
 
static bool parse(int unit, const QString &value, CAmount *val_out)
Parse string to coin amount. 
 
QValidator::State validate(QString &text, int &pos) const
 
void setValue(const CAmount &value)
 
int64_t CAmount
Amount in satoshis (Can be negative) 
 
BitcoinAmountField(QWidget *parent=0)
 
void setEnabled(bool fEnabled)
Enable/Disable. 
 
CAmount parse(const QString &text, bool *valid_out=0) const
Parse a string into a number of base monetary units and return validity. 
 
void unitChanged(int idx)
 
void setSingleStep(const CAmount &step)
Set single step in satoshis. 
 
bool event(QEvent *event)
 
void setValue(const QVariant &value)
 
void clear()
Make field empty and ready for new input. 
 
void setValid(bool valid)
Mark current value as invalid in UI. 
 
void setSingleStep(const CAmount &step)
 
void setDisplayUnit(int unit)
Change unit used to display amount. 
 
void fixup(QString &input) const
 
void setValue(const CAmount &value)
 
static QString format(int unit, const CAmount &amount, bool plussign=false, SeparatorStyle separators=separatorStandard)
Format as string. 
 
static CAmount maxMoney()
Return maximum number of base units (Satoshis)