1
#include <qapplication.h>
3
#include <qwt_scale_map.h>
4
#include <qwt_plot_curve.h>
5
#include <qwt_symbol.h>
8
#if QT_VERSION >= 0x040000
9
#include <qpaintengine.h>
13
//------------------------------------------------------------
16
// This example program features some of the different
17
// display styles of the QwtPlotCurve class
18
//------------------------------------------------------------
25
#if QT_VERSION >= 0x040000
26
const int CurvCnt = 6;
28
const int CurvCnt = 5;
32
// Arrays holding the values
39
class MainWin : public QFrame
45
#if QT_VERSION >= 0x040000
46
virtual void paintEvent(QPaintEvent *);
48
void drawContents(QPainter *p);
51
void shiftDown(QRect &rect, int offset) const;
53
QwtPlotCurve crv[CurvCnt];
60
xMap.setScaleInterval(-0.5, 10.5);
61
yMap.setScaleInterval(-1.1, 1.1);
66
setFrameStyle(QFrame::Box|QFrame::Raised);
74
{ xval[i] = double(i) * 10.0 / double(Size - 1);
75
yval[i] = sin(xval[i]) * cos(2.0 * xval[i]);
79
// define curve styles
84
sym.setStyle(QwtSymbol::Cross);
85
sym.setPen(QColor(Qt::black));
87
crv[i].setSymbol(sym);
88
crv[i].setPen(QColor(Qt::darkGreen));
89
crv[i].setStyle(QwtPlotCurve::Lines);
90
crv[i].setCurveAttribute(QwtPlotCurve::Fitted);
93
sym.setStyle(QwtSymbol::Ellipse);
94
sym.setPen(QColor(Qt::blue));
95
sym.setBrush(QColor(Qt::yellow));
97
crv[i].setSymbol(sym);
98
crv[i].setPen(QColor(Qt::red));
99
crv[i].setStyle(QwtPlotCurve::Sticks);
102
crv[i].setPen(QColor(Qt::darkBlue));
103
crv[i].setStyle(QwtPlotCurve::Lines);
106
#if QT_VERSION >= 0x040000
107
crv[i].setPen(QColor(Qt::darkBlue));
108
crv[i].setStyle(QwtPlotCurve::Lines);
109
crv[i].setRenderHint(QwtPlotItem::RenderAntialiased);
114
crv[i].setPen(QColor(Qt::darkCyan));
115
crv[i].setStyle(QwtPlotCurve::Steps);
118
sym.setStyle(QwtSymbol::XCross);
119
sym.setPen(QColor(Qt::darkMagenta));
120
crv[i].setSymbol(sym);
121
crv[i].setStyle(QwtPlotCurve::NoCurve);
128
for(i=0;i<CurvCnt;i++)
129
crv[i].setRawData(xval,yval,Size);
132
void MainWin::shiftDown(QRect &rect, int offset) const
134
#if QT_VERSION < 0x040000
135
rect.moveBy(0, offset);
137
rect.translate(0, offset);
141
#if QT_VERSION >= 0x040000
142
void MainWin::paintEvent(QPaintEvent *event)
144
QFrame::paintEvent(event);
146
QPainter painter(this);
147
painter.setClipRect(contentsRect());
148
drawContents(&painter);
156
void MainWin::drawContents(QPainter *painter)
160
QRect r = contentsRect();
162
deltay = r.height() / CurvCnt - 1;
169
for (i=0;i<CurvCnt;i++)
171
xMap.setPaintInterval(r.left(), r.right());
172
yMap.setPaintInterval(r.top(), r.bottom());
174
#if QT_VERSION >= 0x040000
175
const QPaintEngine *pe = painter->device()->paintEngine();
176
if (pe->hasFeature(QPaintEngine::Antialiasing) )
178
painter->setRenderHint(QPainter::Antialiasing,
179
crv[i].testRenderHint(QwtPlotItem::RenderAntialiased) );
182
crv[i].draw(painter, xMap, yMap, r);
184
shiftDown(r, deltay);
190
r = contentsRect(); // reset r
191
painter->setFont(QFont("Helvetica", 8));
193
const int alignment = Qt::AlignTop|Qt::AlignHCenter;
195
painter->setPen(Qt::black);
197
painter->drawText(0,r.top(),r.width(), painter->fontMetrics().height(),
198
alignment, "Style: Line/Fitted, Symbol: Cross");
199
shiftDown(r, deltay);
201
painter->drawText(0,r.top(),r.width(), painter->fontMetrics().height(),
202
alignment, "Style: Sticks, Symbol: Ellipse");
203
shiftDown(r, deltay);
205
painter->drawText(0 ,r.top(),r.width(), painter->fontMetrics().height(),
206
alignment, "Style: Lines, Symbol: None");
207
shiftDown(r, deltay);
209
#if QT_VERSION >= 0x040000
210
painter->drawText(0 ,r.top(),r.width(), painter->fontMetrics().height(),
211
alignment, "Style: Lines, Symbol: None, Antialiased");
212
shiftDown(r, deltay);
216
painter->drawText(0, r.top(),r.width(), painter->fontMetrics().height(),
217
alignment, "Style: Steps, Symbol: None");
218
shiftDown(r, deltay);
220
painter->drawText(0,r.top(),r.width(), painter->fontMetrics().height(),
221
alignment, "Style: NoCurve, Symbol: XCross");
224
int main (int argc, char **argv)
226
QApplication a(argc, argv);
230
#if QT_VERSION < 0x040000