mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
QT5 -- Add Qwt 6.1-multiaxes
This commit is contained in:
188
qwt/examples/controls/wheelbox.cpp
Normal file
188
qwt/examples/controls/wheelbox.cpp
Normal file
@@ -0,0 +1,188 @@
|
||||
#include <qlabel.h>
|
||||
#include <qlayout.h>
|
||||
#include <qwt_wheel.h>
|
||||
#include <qwt_thermo.h>
|
||||
#include <qwt_scale_engine.h>
|
||||
#include <qwt_transform.h>
|
||||
#include <qwt_color_map.h>
|
||||
#include "wheelbox.h"
|
||||
|
||||
WheelBox::WheelBox( Qt::Orientation orientation,
|
||||
int type, QWidget *parent ):
|
||||
QWidget( parent )
|
||||
{
|
||||
QWidget *box = createBox( orientation, type );
|
||||
d_label = new QLabel( this );
|
||||
d_label->setAlignment( Qt::AlignHCenter | Qt::AlignTop );
|
||||
|
||||
QBoxLayout *layout = new QVBoxLayout( this );
|
||||
layout->addWidget( box );
|
||||
layout->addWidget( d_label );
|
||||
|
||||
setNum( d_wheel->value() );
|
||||
|
||||
connect( d_wheel, SIGNAL( valueChanged( double ) ),
|
||||
this, SLOT( setNum( double ) ) );
|
||||
}
|
||||
|
||||
QWidget *WheelBox::createBox(
|
||||
Qt::Orientation orientation, int type )
|
||||
{
|
||||
d_wheel = new QwtWheel();
|
||||
d_wheel->setValue( 80 );
|
||||
d_wheel->setWheelWidth( 20 );
|
||||
d_wheel->setMass( 1.0 );
|
||||
|
||||
d_thermo = new QwtThermo();
|
||||
d_thermo->setOrientation( orientation );
|
||||
|
||||
if ( orientation == Qt::Horizontal )
|
||||
{
|
||||
d_thermo->setScalePosition( QwtThermo::LeadingScale );
|
||||
d_wheel->setOrientation( Qt::Vertical );
|
||||
}
|
||||
else
|
||||
{
|
||||
d_thermo->setScalePosition( QwtThermo::TrailingScale );
|
||||
d_wheel->setOrientation( Qt::Horizontal );
|
||||
}
|
||||
|
||||
switch( type )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
QwtLinearColorMap *colorMap = new QwtLinearColorMap();
|
||||
colorMap->setColorInterval( Qt::blue, Qt::red );
|
||||
d_thermo->setColorMap( colorMap );
|
||||
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
QwtLinearColorMap *colorMap = new QwtLinearColorMap();
|
||||
colorMap->setMode( QwtLinearColorMap::FixedColors );
|
||||
|
||||
int idx = 4;
|
||||
|
||||
colorMap->setColorInterval( Qt::GlobalColor( idx ),
|
||||
Qt::GlobalColor( idx + 10 ) );
|
||||
for ( int i = 1; i < 10; i++ )
|
||||
{
|
||||
colorMap->addColorStop( i / 10.0,
|
||||
Qt::GlobalColor( idx + i ) );
|
||||
}
|
||||
|
||||
d_thermo->setColorMap( colorMap );
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
d_wheel->setRange( 10, 1000 );
|
||||
d_wheel->setSingleStep( 1.0 );
|
||||
|
||||
d_thermo->setScaleEngine( new QwtLogScaleEngine );
|
||||
d_thermo->setScaleMaxMinor( 10 );
|
||||
|
||||
d_thermo->setFillBrush( Qt::darkCyan );
|
||||
d_thermo->setAlarmBrush( Qt::magenta );
|
||||
d_thermo->setAlarmLevel( 500.0 );
|
||||
|
||||
d_wheel->setValue( 800 );
|
||||
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
d_wheel->setRange( -1000, 1000 );
|
||||
d_wheel->setSingleStep( 1.0 );
|
||||
d_wheel->setPalette( QColor( "Tan" ) );
|
||||
|
||||
QwtLinearScaleEngine *scaleEngine = new QwtLinearScaleEngine();
|
||||
scaleEngine->setTransformation( new QwtPowerTransform( 2 ) );
|
||||
|
||||
d_thermo->setScaleMaxMinor( 5 );
|
||||
d_thermo->setScaleEngine( scaleEngine );
|
||||
|
||||
QPalette pal = palette();
|
||||
pal.setColor( QPalette::Base, Qt::darkGray );
|
||||
pal.setColor( QPalette::ButtonText, QColor( "darkKhaki" ) );
|
||||
|
||||
d_thermo->setPalette( pal );
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
d_wheel->setRange( -100, 300 );
|
||||
d_wheel->setInverted( true );
|
||||
|
||||
QwtLinearColorMap *colorMap = new QwtLinearColorMap();
|
||||
colorMap->setColorInterval( Qt::darkCyan, Qt::yellow );
|
||||
d_thermo->setColorMap( colorMap );
|
||||
|
||||
d_wheel->setValue( 243 );
|
||||
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
d_thermo->setFillBrush( Qt::darkCyan );
|
||||
d_thermo->setAlarmBrush( Qt::magenta );
|
||||
d_thermo->setAlarmLevel( 60.0 );
|
||||
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
d_thermo->setOriginMode( QwtThermo::OriginMinimum );
|
||||
d_thermo->setFillBrush( QBrush( "DarkSlateBlue" ) );
|
||||
d_thermo->setAlarmBrush( QBrush( "DarkOrange" ) );
|
||||
d_thermo->setAlarmLevel( 60.0 );
|
||||
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
d_wheel->setRange( -100, 100 );
|
||||
|
||||
d_thermo->setOriginMode( QwtThermo::OriginCustom );
|
||||
d_thermo->setOrigin( 0.0 );
|
||||
d_thermo->setFillBrush( Qt::darkBlue );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
double min = d_wheel->minimum();
|
||||
double max = d_wheel->maximum();
|
||||
|
||||
if ( d_wheel->isInverted() )
|
||||
qSwap( min, max );
|
||||
|
||||
d_thermo->setScale( min, max );
|
||||
d_thermo->setValue( d_wheel->value() );
|
||||
|
||||
connect( d_wheel, SIGNAL( valueChanged( double ) ),
|
||||
d_thermo, SLOT( setValue( double ) ) );
|
||||
|
||||
QWidget *box = new QWidget();
|
||||
|
||||
QBoxLayout *layout;
|
||||
|
||||
if ( orientation == Qt::Horizontal )
|
||||
layout = new QHBoxLayout( box );
|
||||
else
|
||||
layout = new QVBoxLayout( box );
|
||||
|
||||
layout->addWidget( d_thermo, Qt::AlignCenter );
|
||||
layout->addWidget( d_wheel );
|
||||
|
||||
return box;
|
||||
}
|
||||
|
||||
void WheelBox::setNum( double v )
|
||||
{
|
||||
QString text;
|
||||
text.setNum( v, 'f', 2 );
|
||||
|
||||
d_label->setText( text );
|
||||
}
|
||||
Reference in New Issue
Block a user