11 #include <QAbstractSpinBox>
12 #include <QApplication>
13 #include <QHBoxLayout>
29 setAlignment(Qt::AlignRight);
31 connect(lineEdit(), SIGNAL(textEdited(QString)),
this, SIGNAL(
valueChanged()));
34 QValidator::State
validate(QString& text,
int& pos)
const
37 return QValidator::Intermediate;
41 return valid ? QValidator::Intermediate : QValidator::Invalid;
44 void fixup(QString& input)
const
50 lineEdit()->setText(input);
56 return parse(text(), valid_out);
97 const QFontMetrics fm(fontMetrics());
98 int h = lineEdit()->minimumSizeHint().height();
102 QStyleOptionSpinBox opt;
103 initStyleOption(&opt);
106 opt.rect.setSize(hint + extra);
107 extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, QStyle::SC_SpinBoxEditField,
this).size();
109 opt.rect.setSize(hint + extra);
110 extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, QStyle::SC_SpinBoxEditField,
this).size();
116 cachedMinimumSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint,
this).expandedTo(QApplication::globalStrut());
141 return valid ? val : 0;
147 if (
event->type() == QEvent::KeyPress ||
event->type() == QEvent::KeyRelease) {
148 QKeyEvent* keyEvent =
static_cast<QKeyEvent*
>(
event);
149 if (keyEvent->key() == Qt::Key_Comma) {
151 QKeyEvent periodKeyEvent(
event->type(), Qt::Key_Period, keyEvent->modifiers(),
".", keyEvent->isAutoRepeat(), keyEvent->count());
152 return QAbstractSpinBox::event(&periodKeyEvent);
155 return QAbstractSpinBox::event(
event);
163 if (text().isEmpty())
164 return StepUpEnabled;
169 rv |= StepDownEnabled;
180 #include "bitcoinamountfield.moc"
186 amount->setLocale(QLocale::c());
187 amount->installEventFilter(
this);
188 amount->setMaximumWidth(170);
190 QHBoxLayout* layout =
new QHBoxLayout(
this);
191 layout->addWidget(
amount);
194 layout->addWidget(
unit);
195 layout->addStretch(1);
196 layout->setContentsMargins(0, 0, 0, 0);
200 setFocusPolicy(Qt::TabFocus);
205 connect(
unit, SIGNAL(currentIndexChanged(
int)),
this, SLOT(
unitChanged(
int)));
214 unit->setCurrentIndex(0);
234 amount->setStyleSheet(
"");
241 if (event->type() == QEvent::FocusIn) {
245 return QWidget::eventFilter(
object, event);
250 QWidget::setTabOrder(prev,
amount);
267 amount->setReadOnly(fReadOnly);
268 unit->setEnabled(!fReadOnly);
274 unit->setToolTip(
unit->itemData(idx, Qt::ToolTipRole).toString());