################################################################# 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 = sinusplotSOURCES = \ sinusplot.cpp
################################################################# 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###################################################################QWT_ROOT = $${PWD}/..include( $${QWT_ROOT}/qwtconfig.pri )include( $${QWT_ROOT}/qwtbuild.pri )TEMPLATE = appINCLUDEPATH += $${QWT_ROOT}/srcDEPENDPATH += $${QWT_ROOT}/srcDESTDIR = $${QWT_ROOT}/examples/binQMAKE_RPATHDIR *= $${QWT_ROOT}/libcontains(QWT_CONFIG, QwtFramework) { LIBS += -F$${QWT_ROOT}/lib}else { LIBS += -L$${QWT_ROOT}/lib}IPATH = $${INCLUDEPATH}qtAddLibrary(qwt)INCLUDEPATH = $${IPATH}contains(QWT_CONFIG, QwtSvg) { QT += svg}else { DEFINES += QWT_NO_SVG}win32 { contains(QWT_CONFIG, QwtDll) { DEFINES += QT_DLL QWT_DLL }}
################################################################################################################################ 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####################################################################################################################################### qmake internal options######################################################################CONFIG += qt CONFIG += warn_onCONFIG += no_keywordsCONFIG += silent####################################################################### release/debug mode######################################################################win32 { # On Windows you can't mix release and debug libraries. # The designer is built in release mode. If you like to use it # you need a release version. For your own application development you # might need a debug version. # Enable debug_and_release + build_all if you want to build both. CONFIG += debug_and_release CONFIG += build_all}else { CONFIG += release VER_MAJ = $${QWT_VER_MAJ} VER_MIN = $${QWT_VER_MIN} VER_PAT = $${QWT_VER_PAT} VERSION = $${QWT_VERSION}}linux-g++ { # CONFIG += separate_debug_info}####################################################################### paths for building qwt######################################################################MOC_DIR = mocRCC_DIR = resources!debug_and_release { OBJECTS_DIR = obj}unix { exists( $${QMAKE_LIBDIR_QT}/libqwt.* ) { # On some Linux distributions the Qwt libraries are installed # in the same directory as the Qt libraries. Unfortunately # qmake always adds QMAKE_LIBDIR_QT at the beginning of the # linker path, so that the installed libraries will be # used instead of the local ones. error( "local build will conflict with $${QMAKE_LIBDIR_QT}/libqwt.*" ) }}
################################################################# 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################################################################QWT_VER_MAJ = 6QWT_VER_MIN = 0QWT_VER_PAT = 1QWT_VERSION = $${QWT_VER_MAJ}.$${QWT_VER_MIN}.$${QWT_VER_PAT}####################################################################### Install paths######################################################################QWT_INSTALL_PREFIX = $$[QT_INSTALL_PREFIX]unix { QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION}win32 { QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION}QWT_INSTALL_DOCS = $${QWT_INSTALL_PREFIX}/docQWT_INSTALL_HEADERS = $${QWT_INSTALL_PREFIX}/includeQWT_INSTALL_LIBS = $${QWT_INSTALL_PREFIX}/lib####################################################################### Designer plugin######################################################################QWT_INSTALL_PLUGINS = $${QWT_INSTALL_PREFIX}/plugins/designer# QWT_INSTALL_PLUGINS = $${QT_INSTALL_PREFIX}/plugins/designer####################################################################### Features# When building a Qwt application with qmake you might want to load# the compiler/linker flags, that are required to build a Qwt application# from qwt.prf. Therefore all you need to do is to add "CONFIG += qwt" # to your project file and take care, that qwt.prf can be found by qmake.# ( see http://doc.trolltech.com/4.7/qmake-advanced-usage.html#adding-new-configuration-features )# I recommend not to install the Qwt features together with the# Qt features, because you will have to reinstall the Qwt features,# with every Qt upgrade. ######################################################################QWT_INSTALL_FEATURES = $${QWT_INSTALL_PREFIX}/features# QWT_INSTALL_FEATURES = $${QT_INSTALL_PREFIX}/features####################################################################### Build the static/shared libraries.# If QwtDll is enabled, a shared library is built, otherwise# it will be a static library.######################################################################QWT_CONFIG += QwtDll####################################################################### QwtPlot enables all classes, that are needed to use the QwtPlot # widget. ######################################################################QWT_CONFIG += QwtPlot####################################################################### QwtWidgets enables all classes, that are needed to use the all other# widgets (sliders, dials, ...), beside QwtPlot. ######################################################################QWT_CONFIG += QwtWidgets####################################################################### If you want to display svg images on the plot canvas, or# export a plot to a SVG document######################################################################QWT_CONFIG += QwtSvg####################################################################### You can use the MathML renderer of the Qt solutions package to # enable MathML support in Qwt. Because of license implications# the ( modified ) code of the MML Widget solution is included and# linked together with the QwtMathMLTextEngine into an own library. # To use it you will have to add "CONFIG += qwtmathml"# to your qmake project file.######################################################################QWT_CONFIG += QwtMathML####################################################################### If you want to build the Qwt designer plugin, # enable the line below.# Otherwise you have to build it from the designer directory.######################################################################QWT_CONFIG += QwtDesigner####################################################################### If you want to auto build the examples, enable the line below# Otherwise you have to build them from the examples directory.####################################################################### QWT_CONFIG += QwtExamples####################################################################### When Qt has been built as framework qmake ( qtAddLibrary ) wants # to link frameworks instead of regular libs######################################################################macx:CONFIG(qt_framework, qt_framework|qt_no_framework) { QWT_CONFIG += QwtFramework}
#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_series_data.h>#include <qwt_plot_canvas.h>#include <qwt_plot_panner.h>#include <qwt_plot_magnifier.h>#include <qwt_text.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 Plot : public QwtPlot{public: Plot( QWidget *parent = NULL);protected: virtual void resizeEvent( QResizeEvent * );private: void populate(); void updateGradient();};Plot::Plot(QWidget *parent): QwtPlot( parent ){ // panning with the left mouse button (void) new QwtPlotPanner( canvas() ); // zoom in/out with the wheel (void) new QwtPlotMagnifier( canvas() ); 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 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 ); 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(QPen(Qt::red)); cSin->attach(this); QwtPlotCurve *cCos = new QwtPlotCurve("y = cos(x)"); cCos->setRenderHint(QwtPlotItem::RenderAntialiased); cCos->setLegendAttribute(QwtPlotCurve::LegendShowLine, true); cCos->setPen(QPen(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(QPen(Qt::black, 0, Qt::DashDotLine)); mX->setXValue(2.0 * M_PI); mX->attach(this);}void Plot::updateGradient(){ QPalette pal = palette(); const QColor buttonColor = pal.color( QPalette::Button );#ifdef Q_WS_X11 // Qt 4.7.1: QGradient::StretchToDeviceMode is buggy on X11 QLinearGradient gradient( rect().topLeft(), rect().bottomLeft() ); gradient.setColorAt( 0.0, Qt::white ); gradient.setColorAt( 0.7, buttonColor ); gradient.setColorAt( 1.0, buttonColor );#else QLinearGradient gradient( 0, 0, 0, 1 ); gradient.setCoordinateMode( QGradient::StretchToDeviceMode ); gradient.setColorAt( 0.0, Qt::white ); gradient.setColorAt( 0.7, buttonColor ); gradient.setColorAt( 1.0, buttonColor );#endif pal.setBrush( QPalette::Window, gradient ); setPalette( pal );}void Plot::resizeEvent( QResizeEvent *event ){ QwtPlot::resizeEvent( event );#ifdef Q_WS_X11 updateGradient();#endif}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(); }