#include "stdafx.h" #include "QMotorDoubleSlider.h" QMotorDoubleSlider::QMotorDoubleSlider(QWidget* pParent /*= NULL*/) : QSlider(pParent), //m_Multiplier(0.00054496986),//上海农科院,修改前:0.00052734375/5=0.00010546875;修改后准确值为0.000544969862759644,近似为0.00054496986/5=0.000108993972,因为有个机械装置1脉冲距离需要除以5; m_Multiplier(0.00054496986),//兴安盟农研所 m_yMultiplier(0.000108993972)// { connect(this, SIGNAL(valueChanged(int)), this, SLOT(notifyValueChanged(int))); setSingleStep(1); setOrientation(Qt::Horizontal); setFocusPolicy(Qt::NoFocus); } //向外发射 void QMotorDoubleSlider::notifyValueChanged(int Value) { emit valueChanged((double)Value * m_Multiplier);////////// } //接收外边 void QMotorDoubleSlider::setValue(double Value, bool BlockSignals) { QSlider::blockSignals(BlockSignals); QSlider::setValue(Value / m_Multiplier);//////////// if (!BlockSignals) emit valueChanged(Value); QSlider::blockSignals(false); } void QMotorDoubleSlider::setRange(double Min, double Max) { QSlider::setRange(Min / m_Multiplier, Max / m_Multiplier);////// emit rangeChanged(Min, Max); } void QMotorDoubleSlider::setMinimum(double Min) { QSlider::setMinimum(Min / m_Multiplier);////// emit rangeChanged(minimum(), maximum()); } double QMotorDoubleSlider::minimum() const { return QSlider::minimum() * m_Multiplier;///// } void QMotorDoubleSlider::setMaximum(double Max) { QSlider::setMaximum(Max / m_Multiplier);////// emit rangeChanged(minimum(), maximum()); } double QMotorDoubleSlider::maximum() const { return QSlider::maximum() * m_Multiplier;/////// } double QMotorDoubleSlider::value() const { int Value = QSlider::value(); return (double)Value * m_Multiplier;////// } double QMotorDoubleSlider::OriginalValue() const { int Value = QSlider::value(); return (double)Value; } long QMotorDoubleSlider::getPositionPulse(double position) { return position / m_Multiplier; } double QMotorDoubleSlider::getDistanceFromPulse(int pulse) { return pulse * m_Multiplier; }