一、运行效果
二、功能特点
可设置范围值,支持负数值。 可设置精确度,最大支持小数点后3位。 可设置大刻度数量,小刻度数量。 可设置开始旋转角度,结束旋转角度。 可设置外圆背景、内圆背景、饼圆三种颜色、刻度尺颜色、文字颜色。 自适应窗体拉伸、刻度尺、文字自动缩放。 可自由拓展各种渐变色、各圆的半径。 三色圆环按照比例设置范围角度、用户可以自由设置三色占用比例。 圆环样式可选择三色圆环、当前圆环。 指示器样式可选择圆形指示器、指针指示器、圆角指针指示器、三角形指示器。 可设置中间圆的宽度,以便使用更大数值。
三、公共接口
public Q_SLOTS: void setRange ( double minValue, double maxValue) ; void setRange ( int minValue, int maxValue) ; void setMinValue ( double minValue) ; void setMaxValue ( double maxValue) ; void setValue ( double value) ; void setValue ( int value) ; void setPrecision ( int precision) ; void setScaleMajor ( int scaleMajor) ; void setScaleMinor ( int scaleMinor) ; void setStartAngle ( int startAngle) ; void setEndAngle ( int endAngle) ; void setOuterCircleColor ( const QColor & outerCircleColor) ; void setInnerCircleColor ( const QColor & innerCircleColor) ; void setPieColorStart ( const QColor & pieColorStart) ; void setPieColorMid ( const QColor & pieColorMid) ; void setPieColorEnd ( const QColor & pieColorEnd) ; void setCoverCircleColor ( const QColor & coverCircleColor) ; void setScaleColor ( const QColor & scaleColor) ; void setPointerColor ( const QColor & pointerColor) ; void setCenterCircleColor ( const QColor & centerCircleColor) ; void setTextColor ( const QColor & textColor) ; void setShowOverlay ( bool showOverlay) ; void setOverlayColor ( const QColor & overlayColor) ; void setCircleWidth ( int circleWidth) ; void setPieStyle ( const PieStyle & pieStyle) ; void setPointerStyle ( const PointerStyle & pointerStyle) ; Q_SIGNALS: void valueChanged ( int value) ;
四、使用示例
# pragma execution_character_set ( "utf-8" ) # include "frmgaugecar.h"
# include "ui_frmgaugecar.h"
# include "gaugecar.h"
# include "qpropertyanimation.h"
# include "qvariantanimation.h"
# include "qmetaobject.h"
# include "qdebug.h" frmGaugeCar:: frmGaugeCar ( QWidget * parent) : QWidget ( parent) , ui ( new Ui:: frmGaugeCar)
{ ui-> setupUi ( this ) ; this -> initForm ( ) ;
} frmGaugeCar :: ~ frmGaugeCar ( )
{ delete ui;
} void frmGaugeCar:: initForm ( )
{ animation = new QPropertyAnimation ( ui-> gaugeCar, "value" ) ; animation-> setDuration ( 800 ) ; QMetaObject metaObject = QEasingCurve:: staticMetaObject; QMetaEnum metaEnum = metaObject. enumerator ( metaObject. indexOfEnumerator ( "Type" ) ) ; int count = QEasingCurve:: NCurveTypes - 1 ; for ( int i = 0 ; i < count; ++ i) { ui-> cboxAnimationType-> addItem ( metaEnum. key ( i) ) ; } ui-> cboxAnimationType-> setCurrentIndex ( ui-> cboxAnimationType-> findText ( "OutBounce" ) ) ; ui-> horizontalSlider-> setValue ( 88 ) ; ui-> ckAnimation-> setChecked ( true ) ; ui-> cboxPointerStyle-> setCurrentIndex ( 1 ) ;
} void frmGaugeCar:: on_cboxPieStyle_currentIndexChanged ( int index)
{ ui-> gaugeCar-> setPieStyle ( ( GaugeCar:: PieStyle) index) ;
} void frmGaugeCar:: on_cboxPointerStyle_currentIndexChanged ( int index)
{ ui-> gaugeCar-> setPointerStyle ( ( GaugeCar:: PointerStyle) index) ;
} void frmGaugeCar:: on_horizontalSlider_valueChanged ( int value)
{ if ( ui-> ckAnimation-> isChecked ( ) ) { animation-> stop ( ) ; animation-> setStartValue ( ui-> gaugeCar-> getValue ( ) ) ; animation-> setEndValue ( value) ; animation-> start ( ) ; } else { ui-> gaugeCar-> setValue ( value) ; }
} void frmGaugeCar:: on_cboxAnimationType_currentIndexChanged ( int index)
{ animation-> setEasingCurve ( ( QEasingCurve:: Type) index) ;
}