Released version 6.1.3
This commit is contained in:
commit
a94503cb82
1885 changed files with 276310 additions and 0 deletions
218
examples/sinusplot/sinusplot.cpp
Normal file
218
examples/sinusplot/sinusplot.cpp
Normal file
|
@ -0,0 +1,218 @@
|
|||
#include <qapplication.h>
|
||||
#include <qlayout.h>
|
||||
#include <qwt_plot.h>
|
||||
#include <qwt_plot_marker.h>
|
||||
#include <qwt_plot_curve.h>
|
||||
#include <qwt_legend.h>
|
||||
#include <qwt_point_data.h>
|
||||
#include <qwt_plot_canvas.h>
|
||||
#include <qwt_plot_panner.h>
|
||||
#include <qwt_plot_magnifier.h>
|
||||
#include <qwt_text.h>
|
||||
#include <qwt_symbol.h>
|
||||
#include <qwt_math.h>
|
||||
#include <math.h>
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// simple.cpp
|
||||
//
|
||||
// A simple example which shows how to use QwtPlot connected
|
||||
// to a data class without any storage, calculating each values
|
||||
// on the fly.
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
class FunctionData: public QwtSyntheticPointData
|
||||
{
|
||||
public:
|
||||
FunctionData( double( *y )( double ) ):
|
||||
QwtSyntheticPointData( 100 ),
|
||||
d_y( y )
|
||||
{
|
||||
}
|
||||
|
||||
virtual double y( double x ) const
|
||||
{
|
||||
return d_y( x );
|
||||
}
|
||||
|
||||
private:
|
||||
double( *d_y )( double );
|
||||
};
|
||||
|
||||
class ArrowSymbol: public QwtSymbol
|
||||
{
|
||||
public:
|
||||
ArrowSymbol()
|
||||
{
|
||||
QPen pen( Qt::black, 0 );
|
||||
pen.setJoinStyle( Qt::MiterJoin );
|
||||
|
||||
setPen( pen );
|
||||
setBrush( Qt::red );
|
||||
|
||||
QPainterPath path;
|
||||
path.moveTo( 0, 8 );
|
||||
path.lineTo( 0, 5 );
|
||||
path.lineTo( -3, 5 );
|
||||
path.lineTo( 0, 0 );
|
||||
path.lineTo( 3, 5 );
|
||||
path.lineTo( 0, 5 );
|
||||
|
||||
QTransform transform;
|
||||
transform.rotate( -30.0 );
|
||||
path = transform.map( path );
|
||||
|
||||
setPath( path );
|
||||
setPinPoint( QPointF( 0, 0 ) );
|
||||
|
||||
setSize( 10, 14 );
|
||||
}
|
||||
};
|
||||
|
||||
class Plot : public QwtPlot
|
||||
{
|
||||
public:
|
||||
Plot( QWidget *parent = NULL );
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent( QResizeEvent * );
|
||||
|
||||
private:
|
||||
void populate();
|
||||
void updateGradient();
|
||||
};
|
||||
|
||||
|
||||
Plot::Plot( QWidget *parent ):
|
||||
QwtPlot( parent )
|
||||
{
|
||||
setAutoFillBackground( true );
|
||||
setPalette( QPalette( QColor( 165, 193, 228 ) ) );
|
||||
updateGradient();
|
||||
|
||||
setTitle( "A Simple QwtPlot Demonstration" );
|
||||
insertLegend( new QwtLegend(), QwtPlot::RightLegend );
|
||||
|
||||
// axes
|
||||
setAxisTitle( xBottom, "x -->" );
|
||||
setAxisScale( xBottom, 0.0, 10.0 );
|
||||
|
||||
setAxisTitle( yLeft, "y -->" );
|
||||
setAxisScale( yLeft, -1.0, 1.0 );
|
||||
|
||||
// canvas
|
||||
QwtPlotCanvas *canvas = new QwtPlotCanvas();
|
||||
canvas->setLineWidth( 1 );
|
||||
canvas->setFrameStyle( QFrame::Box | QFrame::Plain );
|
||||
canvas->setBorderRadius( 15 );
|
||||
|
||||
QPalette canvasPalette( Qt::white );
|
||||
canvasPalette.setColor( QPalette::Foreground, QColor( 133, 190, 232 ) );
|
||||
canvas->setPalette( canvasPalette );
|
||||
|
||||
setCanvas( canvas );
|
||||
|
||||
// panning with the left mouse button
|
||||
( void ) new QwtPlotPanner( canvas );
|
||||
|
||||
// zoom in/out with the wheel
|
||||
( void ) new QwtPlotMagnifier( canvas );
|
||||
|
||||
populate();
|
||||
}
|
||||
|
||||
void Plot::populate()
|
||||
{
|
||||
// Insert new curves
|
||||
QwtPlotCurve *cSin = new QwtPlotCurve( "y = sin(x)" );
|
||||
cSin->setRenderHint( QwtPlotItem::RenderAntialiased );
|
||||
cSin->setLegendAttribute( QwtPlotCurve::LegendShowLine, true );
|
||||
cSin->setPen( Qt::red );
|
||||
cSin->attach( this );
|
||||
|
||||
QwtPlotCurve *cCos = new QwtPlotCurve( "y = cos(x)" );
|
||||
cCos->setRenderHint( QwtPlotItem::RenderAntialiased );
|
||||
cCos->setLegendAttribute( QwtPlotCurve::LegendShowLine, true );
|
||||
cCos->setPen( Qt::blue );
|
||||
cCos->attach( this );
|
||||
|
||||
// Create sin and cos data
|
||||
cSin->setData( new FunctionData( ::sin ) );
|
||||
cCos->setData( new FunctionData( ::cos ) );
|
||||
|
||||
// Insert markers
|
||||
|
||||
// ...a horizontal line at y = 0...
|
||||
QwtPlotMarker *mY = new QwtPlotMarker();
|
||||
mY->setLabel( QString::fromLatin1( "y = 0" ) );
|
||||
mY->setLabelAlignment( Qt::AlignRight | Qt::AlignTop );
|
||||
mY->setLineStyle( QwtPlotMarker::HLine );
|
||||
mY->setYValue( 0.0 );
|
||||
mY->attach( this );
|
||||
|
||||
// ...a vertical line at x = 2 * pi
|
||||
QwtPlotMarker *mX = new QwtPlotMarker();
|
||||
mX->setLabel( QString::fromLatin1( "x = 2 pi" ) );
|
||||
mX->setLabelAlignment( Qt::AlignLeft | Qt::AlignBottom );
|
||||
mX->setLabelOrientation( Qt::Vertical );
|
||||
mX->setLineStyle( QwtPlotMarker::VLine );
|
||||
mX->setLinePen( Qt::black, 0, Qt::DashDotLine );
|
||||
mX->setXValue( 2.0 * M_PI );
|
||||
mX->attach( this );
|
||||
|
||||
const double x = 7.7;
|
||||
|
||||
// an arrow at a specific position
|
||||
QwtPlotMarker *mPos = new QwtPlotMarker( "Marker" );
|
||||
mPos->setRenderHint( QwtPlotItem::RenderAntialiased, true );
|
||||
mPos->setItemAttribute( QwtPlotItem::Legend, true );
|
||||
mPos->setSymbol( new ArrowSymbol() );
|
||||
mPos->setValue( QPointF( x, ::sin( x ) ) );
|
||||
mPos->setLabel( QString( "x = %1" ).arg( x ) );
|
||||
mPos->setLabelAlignment( Qt::AlignRight | Qt::AlignBottom );
|
||||
mPos->attach( this );
|
||||
}
|
||||
|
||||
void Plot::updateGradient()
|
||||
{
|
||||
QPalette pal = palette();
|
||||
|
||||
const QColor buttonColor = pal.color( QPalette::Button );
|
||||
|
||||
QLinearGradient gradient( rect().topLeft(), rect().bottomLeft() );
|
||||
gradient.setColorAt( 0.0, Qt::white );
|
||||
gradient.setColorAt( 0.7, buttonColor );
|
||||
gradient.setColorAt( 1.0, buttonColor );
|
||||
|
||||
pal.setBrush( QPalette::Window, gradient );
|
||||
setPalette( pal );
|
||||
}
|
||||
|
||||
void Plot::resizeEvent( QResizeEvent *event )
|
||||
{
|
||||
QwtPlot::resizeEvent( event );
|
||||
|
||||
// Qt 4.7.1: QGradient::StretchToDeviceMode is buggy on X11
|
||||
updateGradient();
|
||||
}
|
||||
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
QApplication a( argc, argv );
|
||||
|
||||
Plot *plot = new Plot();
|
||||
|
||||
// We put a dummy widget around to have
|
||||
// so that Qt paints a widget background
|
||||
// when resizing
|
||||
|
||||
QWidget window;
|
||||
QHBoxLayout *layout = new QHBoxLayout( &window );
|
||||
layout->setContentsMargins( 0, 0, 0, 0 );
|
||||
layout->addWidget( plot );
|
||||
|
||||
window.resize( 600, 400 );
|
||||
window.show();
|
||||
|
||||
return a.exec();
|
||||
}
|
16
examples/sinusplot/sinusplot.pro
Normal file
16
examples/sinusplot/sinusplot.pro
Normal file
|
@ -0,0 +1,16 @@
|
|||
################################################################
|
||||
# Qwt Widget Library
|
||||
# Copyright (C) 1997 Josef Wilgen
|
||||
# Copyright (C) 2002 Uwe Rathmann
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the Qwt License, Version 1.0
|
||||
################################################################
|
||||
|
||||
include( $${PWD}/../examples.pri )
|
||||
|
||||
TARGET = sinusplot
|
||||
|
||||
SOURCES = \
|
||||
sinusplot.cpp
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue