git-svn-id: svn://db.shs.com.ru/libs@360 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2018-03-02 18:51:42 +00:00
parent 0ba8ad8f2c
commit 21af552add
6 changed files with 68 additions and 17 deletions

View File

@@ -196,23 +196,7 @@ void EvalSpinBox::setValue(double val) {
void EvalSpinBox::stepBy(int steps) {
QString t = text();
if (eval.check(t)) {
t = eval.expression();
QRegExp re("(\\-?\\d+)");
int pos = 0;
if ((pos = re.indexIn(t)) != -1) {
double v = t.mid(pos, re.matchedLength()).toDouble();
v += steps;
t.remove(pos, re.matchedLength());
t.insert(pos, QString::number(v));
} else {
double v = steps;
t = QString::number(v) + t;
}
eval.check(t);
lineEdit()->setText(eval.expression());
}
stepByDouble(steps);
}
@@ -285,6 +269,37 @@ void EvalSpinBox::focusOutEvent(QFocusEvent * event) {
}
void EvalSpinBox::wheelEvent(QWheelEvent * event) {
if (event->modifiers().testFlag(Qt::ShiftModifier))
stepByDouble(event->delta() > 0 ? 0.1 : -0.1);
else
QAbstractSpinBox::wheelEvent(event);
}
void EvalSpinBox::stepByDouble(double steps) {
//qDebug() << "step" << steps;
QString t = text();
if (eval.check(t)) {
t = eval.expression();
//QRegExp re("(\\-?\\d+)");
QRegExp re("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)");
int pos = 0;
if ((pos = re.indexIn(t)) != -1) {
double v = t.mid(pos, re.matchedLength()).toDouble();
v += steps;
t.remove(pos, re.matchedLength());
t.insert(pos, QString::number(v));
} else {
double v = steps;
t = QString::number(v) + t;
}
eval.check(t);
lineEdit()->setText(eval.expression());
}
}
void EvalSpinBox::setDefaultText(const QString & t) {
// bool def = (!cw->isHidden());
dt = t;