ValueBar( Qt::Orientation orientation, const QString &text, QWidget *parent, double value = 0.0 ): QWidget( parent ) { d_label = new QLabel( text, this ); d_label->setFont( QFont( "Helvetica", 10 ) ); d_thermo = new QwtThermo( this ); d_thermo->setOrientation( orientation ); d_thermo->setScale( 0.0, 100.0 ); d_thermo->setValue( value ); d_thermo->setFont( QFont( "Helvetica", 8 ) ); d_thermo->setPipeWidth( 6 ); d_thermo->setScaleMaxMajor( 6 ); d_thermo->setScaleMaxMinor( 5 ); d_thermo->setFillBrush( Qt::darkMagenta ); #if 0 QwtLinearColorMap *colorMap = new QwtLinearColorMap( Qt::blue, Qt::red ); colorMap->addColorStop( 0.2, Qt::yellow ); colorMap->addColorStop( 0.3, Qt::cyan ); colorMap->addColorStop( 0.4, Qt::green ); colorMap->addColorStop( 0.5, Qt::magenta ); colorMap->setMode( QwtLinearColorMap::FixedColors ); d_thermo->setColorMap( colorMap ); #endif QVBoxLayout *layout = new QVBoxLayout( this ); layout->setMargin( 0 ); layout->setSpacing( 0 ); if ( orientation == Qt::Horizontal ) { d_label->setAlignment( Qt::AlignCenter ); d_thermo->setScalePosition( QwtThermo::LeadingScale ); layout->addWidget( d_label ); layout->addWidget( d_thermo ); } else { d_label->setAlignment( Qt::AlignRight ); d_thermo->setScalePosition( QwtThermo::TrailingScale ); layout->addWidget( d_thermo, 10, Qt::AlignHCenter ); layout->addWidget( d_label, 0 ); } }
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(); if ( orientation == Qt::Horizontal ) { d_thermo->setOrientation( orientation, QwtThermo::TopScale ); d_wheel->setOrientation( Qt::Vertical ); } else { d_thermo->setOrientation( orientation, QwtThermo::LeftScale ); 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: { break; } } d_thermo->setScale( d_wheel->minimum(), d_wheel->maximum() ); 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; }