QwtThermo is a widget which displays a value in an interval. It supports:
By default, the scale and range run over the same interval of values. QwtAbstractScale::setScale() changes the interval of the scale and allows easy conversion between physical units.
The example shows how to make the scale indicate in degrees Fahrenheit and to set the value in degrees Kelvin:
#include <qapplication.h> #include <qwt_thermo.h> double Kelvin2Fahrenheit(double kelvin) { // see http://en.wikipedia.org/wiki/Kelvin return 1.8*kelvin - 459.67; } int main(int argc, char **argv) { const double minKelvin = 0.0; const double maxKelvin = 500.0; QApplication a(argc, argv); QwtThermo t; t.setRange(minKelvin, maxKelvin); t.setScale(Kelvin2Fahrenheit(minKelvin), Kelvin2Fahrenheit(maxKelvin)); // set the value in Kelvin but the scale displays in Fahrenheit // 273.15 Kelvin = 0 Celsius = 32 Fahrenheit t.setValue(273.15); a.setMainWidget(&t); t.show(); return a.exec(); }
Definition at line 69 of file qwt_thermo.h.
Public Types | |
enum | ScalePos { NoScale, LeftScale, RightScale, TopScale, BottomScale, NoScale, LeftScale, RightScale, TopScale, BottomScale } |
Public Slots | |
void | setValue (double val) |
Public Member Functions | |
QwtThermo (QWidget *parent=NULL) | |
virtual | ~QwtThermo () |
void | setOrientation (Qt::Orientation o, ScalePos s) |
void | setScalePosition (ScalePos s) |
ScalePos | scalePosition () const |
void | setBorderWidth (int w) |
int | borderWidth () const |
void | setFillBrush (const QBrush &b) |
const QBrush & | fillBrush () const |
void | setFillColor (const QColor &c) |
const QColor & | fillColor () const |
void | setAlarmBrush (const QBrush &b) |
const QBrush & | alarmBrush () const |
void | setAlarmColor (const QColor &c) |
const QColor & | alarmColor () const |
void | setAlarmLevel (double v) |
double | alarmLevel () const |
void | setAlarmEnabled (bool tf) |
bool | alarmEnabled () const |
void | setPipeWidth (int w) |
int | pipeWidth () const |
void | setMaxValue (double v) |
double | maxValue () const |
void | setMinValue (double v) |
double | minValue () const |
double | value () const |
void | setRange (double vmin, double vmax, bool lg=false) |
void | setMargin (int m) |
virtual QSize | sizeHint () const |
virtual QSize | minimumSizeHint () const |
void | setScaleDraw (QwtScaleDraw *) |
const QwtScaleDraw * | scaleDraw () const |
Protected Member Functions | |
void | draw (QPainter *p, const QRect &update_rect) |
void | drawThermo (QPainter *p) |
void | layoutThermo (bool update=true) |
virtual void | scaleChange () |
virtual void | fontChange (const QFont &oldFont) |
virtual void | paintEvent (QPaintEvent *e) |
virtual void | resizeEvent (QResizeEvent *e) |
QwtScaleDraw * | scaleDraw () |
QwtThermo::QwtThermo | ( | QWidget * | parent = NULL |
) | [explicit] |
QwtThermo::~QwtThermo | ( | ) | [virtual] |
void QwtThermo::setOrientation | ( | Qt::Orientation | o, | |
ScalePos | s | |||
) |
Set the thermometer orientation and the scale position.
The scale position NoScale disables the scale.
o | orientation. Possible values are Qt::Horizontal and Qt::Vertical. The default value is Qt::Vertical. | |
s | Position of the scale. The default value is NoScale. |
Definition at line 365 of file qwt_thermo.cpp.
References layoutThermo().
Referenced by setScalePosition().
void QwtThermo::setScalePosition | ( | ScalePos | s | ) |
Change the scale position (and thermometer orientation).
s | Position of the scale. |
Definition at line 428 of file qwt_thermo.cpp.
References setOrientation().
QwtThermo::ScalePos QwtThermo::scalePosition | ( | ) | const |
void QwtThermo::setBorderWidth | ( | int | w | ) |
Set the border width of the pipe.
Definition at line 623 of file qwt_thermo.cpp.
References layoutThermo().
int QwtThermo::borderWidth | ( | ) | const |
void QwtThermo::setFillBrush | ( | const QBrush & | brush | ) |
Change the brush of the liquid.
brush | New brush. The default brush is solid black. |
Definition at line 674 of file qwt_thermo.cpp.
const QBrush & QwtThermo::fillBrush | ( | ) | const |
void QwtThermo::setFillColor | ( | const QColor & | c | ) |
Change the color of the liquid.
c | New color. The default color is black. |
Definition at line 690 of file qwt_thermo.cpp.
const QColor & QwtThermo::fillColor | ( | ) | const |
void QwtThermo::setAlarmBrush | ( | const QBrush & | brush | ) |
Specify the liquid brush above the alarm threshold.
brush | New brush. The default is solid white. |
Definition at line 706 of file qwt_thermo.cpp.
const QBrush & QwtThermo::alarmBrush | ( | ) | const |
void QwtThermo::setAlarmColor | ( | const QColor & | c | ) |
Specify the liquid color above the alarm threshold.
c | New color. The default is white. |
Definition at line 722 of file qwt_thermo.cpp.
const QColor & QwtThermo::alarmColor | ( | ) | const |
void QwtThermo::setAlarmLevel | ( | double | v | ) |
double QwtThermo::alarmLevel | ( | ) | const |
void QwtThermo::setAlarmEnabled | ( | bool | tf | ) |
Enable or disable the alarm threshold.
tf | true (disabled) or false (enabled) |
Definition at line 788 of file qwt_thermo.cpp.
bool QwtThermo::alarmEnabled | ( | ) | const |
Return if the alarm threshold is enabled or disabled.
Definition at line 795 of file qwt_thermo.cpp.
void QwtThermo::setPipeWidth | ( | int | w | ) |
Change the width of the pipe.
Definition at line 749 of file qwt_thermo.cpp.
References layoutThermo().
int QwtThermo::pipeWidth | ( | ) | const |
void QwtThermo::setMaxValue | ( | double | v | ) |
double QwtThermo::maxValue | ( | ) | const |
void QwtThermo::setMinValue | ( | double | v | ) |
double QwtThermo::minValue | ( | ) | const |
double QwtThermo::value | ( | ) | const |
void QwtThermo::setRange | ( | double | vmin, | |
double | vmax, | |||
bool | logarithmic = false | |||
) |
Set the range.
vmin | value corresponding lower or left end of the thermometer | |
vmax | value corresponding to the upper or right end of the thermometer | |
logarithmic | logarithmic mapping, true or false |
Definition at line 645 of file qwt_thermo.cpp.
References QwtAbstractScale::autoScale(), layoutThermo(), QwtAbstractScale::rescale(), QwtAbstractScale::scaleEngine(), and QwtAbstractScale::setScaleEngine().
Referenced by setMaxValue(), and setMinValue().
void QwtThermo::setMargin | ( | int | m | ) |
Specify the distance between the pipe's endpoints and the widget's border.
The margin is used to leave some space for the scale labels. If a large font is used, it is advisable to adjust the margins.
m | New Margin. The default values are 10 for horizontal orientation and 20 for vertical orientation. |
This function is a NOOP because margins are determined automatically.
Definition at line 779 of file qwt_thermo.cpp.
QSize QwtThermo::sizeHint | ( | ) | const [virtual] |
Definition at line 804 of file qwt_thermo.cpp.
References minimumSizeHint().
QSize QwtThermo::minimumSizeHint | ( | ) | const [virtual] |
Return a minimum size hint.
Definition at line 814 of file qwt_thermo.cpp.
References QwtScaleDraw::extent(), QwtScaleDraw::minLength(), and scaleDraw().
Referenced by sizeHint().
void QwtThermo::setScaleDraw | ( | QwtScaleDraw * | scaleDraw | ) |
Set a scale draw.
For changing the labels of the scales, it is necessary to derive from QwtScaleDraw and overload QwtScaleDraw::label().
scaleDraw | ScaleDraw object, that has to be created with new and will be deleted in ~QwtThermo or the next call of setScaleDraw(). |
Definition at line 161 of file qwt_thermo.cpp.
References scaleDraw(), and QwtAbstractScale::setAbstractScaleDraw().
const QwtScaleDraw * QwtThermo::scaleDraw | ( | ) | const |
Definition at line 170 of file qwt_thermo.cpp.
References QwtAbstractScale::abstractScaleDraw().
Referenced by draw(), layoutThermo(), minimumSizeHint(), and setScaleDraw().
void QwtThermo::setValue | ( | double | val | ) | [slot] |
void QwtThermo::draw | ( | QPainter * | p, | |
const QRect & | update_rect | |||
) | [protected] |
Draw the whole QwtThermo.
Definition at line 202 of file qwt_thermo.cpp.
References QwtAbstractScaleDraw::draw(), drawThermo(), and scaleDraw().
Referenced by paintEvent().
void QwtThermo::drawThermo | ( | QPainter * | p | ) | [protected] |
Redraw the liquid in thermometer pipe.
Definition at line 459 of file qwt_thermo.cpp.
Referenced by draw().
void QwtThermo::layoutThermo | ( | bool | update_geometry = true |
) | [protected] |
Recalculate the QwtThermo geometry and layout based on the QwtThermo::rect() and the fonts.
update_geometry | notify the layout system and call update to redraw the scale |
Definition at line 242 of file qwt_thermo.cpp.
References QwtScaleDraw::getBorderDistHint(), QwtScaleDraw::move(), scaleDraw(), QwtScaleDraw::setAlignment(), and QwtScaleDraw::setLength().
Referenced by fontChange(), resizeEvent(), scaleChange(), setBorderWidth(), setOrientation(), setPipeWidth(), and setRange().
void QwtThermo::scaleChange | ( | ) | [protected, virtual] |
Notify a scale change.
Reimplemented from QwtAbstractScale.
Definition at line 452 of file qwt_thermo.cpp.
References layoutThermo().
void QwtThermo::fontChange | ( | const QFont & | oldFont | ) | [protected, virtual] |
void QwtThermo::paintEvent | ( | QPaintEvent * | e | ) | [protected, virtual] |
void QwtThermo::resizeEvent | ( | QResizeEvent * | e | ) | [protected, virtual] |
QwtScaleDraw * QwtThermo::scaleDraw | ( | ) | [protected] |
Definition at line 179 of file qwt_thermo.cpp.
References QwtAbstractScale::abstractScaleDraw().