From 9d217367e9f29e439bed4eb94d772cb2a4b09495 Mon Sep 17 00:00:00 2001 From: jriegel Date: Mon, 16 Dec 2013 00:02:31 +0100 Subject: [PATCH] Mouse wheel handling in InputField --- src/Gui/InputField.cpp | 24 +++++++++++++++++++++++- src/Gui/InputField.h | 3 +++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Gui/InputField.cpp b/src/Gui/InputField.cpp index b577a15a3..65b02e410 100644 --- a/src/Gui/InputField.cpp +++ b/src/Gui/InputField.cpp @@ -124,6 +124,10 @@ void InputField::newInput(const QString & text) ErrorText = ""; this->setToolTip(QString::fromAscii(ErrorText.c_str())); actQuantity = res; + double dFactor; + res.getUserString(dFactor,actUnitStr); + // calculate the number shown + actUnitValue = res.getValue()/dFactor; // signaling valueChanged(res); @@ -235,7 +239,9 @@ void InputField::setValue(const Base::Quantity& quant) if(!quant.getUnit().isEmpty()) actUnit = quant.getUnit(); - setText(quant.getUserString()); + double dFactor; + setText(quant.getUserString(dFactor,actUnitStr)); + actUnitValue = quant.getValue()/dFactor; } void InputField::setUnit(const Base::Unit& unit) @@ -307,6 +313,22 @@ void InputField::selectNumber(void) } +void InputField::wheelEvent ( QWheelEvent * event ) +{ + int numDegrees = event->delta() / 8; + int numSteps = numDegrees / 15; + + double val = actUnitValue + numSteps; + + this->setText( QString::fromUtf8("%1 %2").arg(val).arg(actUnitStr)); + + //if (event->orientation() == Qt::Horizontal) { + // scrollHorizontally(numSteps); + //} else { + // scrollVertically(numSteps); + //} + event->accept(); +} // -------------------------------------------------------------------- diff --git a/src/Gui/InputField.h b/src/Gui/InputField.h index 5ede1388e..5af5ff5ac 100644 --- a/src/Gui/InputField.h +++ b/src/Gui/InputField.h @@ -129,6 +129,7 @@ Q_SIGNALS: protected Q_SLOTS: void newInput(const QString & text); + void wheelEvent ( QWheelEvent * event ) ; protected: virtual void contextMenuEvent ( QContextMenuEvent * event ); @@ -142,6 +143,8 @@ private: Base::Quantity actQuantity; Base::Unit actUnit; + double actUnitValue; + QString actUnitStr; double Maximum; double Minimum;