1
#include <qapplication.h>
3
#include <qwt_scale_map.h>
4
#include <qwt_plot_curve.h>
5
#include <qwt_symbol.h>
10
//------------------------------------------------------------
13
// This example program features some of the different
14
// display styles of the QwtPlotCurve class
15
//------------------------------------------------------------
22
#if QT_VERSION >= 0x040000
23
const int CurvCnt = 6;
25
const int CurvCnt = 5;
29
// Arrays holding the values
36
class MainWin : public QFrame
42
#if QT_VERSION >= 0x040000
43
virtual void paintEvent(QPaintEvent *);
45
void drawContents(QPainter *p);
48
void shiftDown(QRect &rect, int offset) const;
50
QwtPlotCurve crv[CurvCnt];
57
xMap.setScaleInterval(-0.5, 10.5);
58
yMap.setScaleInterval(-1.1, 1.1);
63
setFrameStyle(QFrame::Box|QFrame::Raised);
71
{ xval[i] = double(i) * 10.0 / double(Size - 1);
72
yval[i] = sin(xval[i]) * cos(2.0 * xval[i]);
76
// define curve styles
81
sym.setStyle(QwtSymbol::Cross);
82
sym.setPen(QColor(Qt::black));
84
crv[i].setSymbol(sym);
85
crv[i].setPen(QColor(Qt::darkGreen));
86
crv[i].setStyle(QwtPlotCurve::Lines);
87
crv[i].setCurveAttribute(QwtPlotCurve::Fitted);
90
sym.setStyle(QwtSymbol::Ellipse);
91
sym.setPen(QColor(Qt::blue));
92
sym.setBrush(QColor(Qt::yellow));
94
crv[i].setSymbol(sym);
95
crv[i].setPen(QColor(Qt::red));
96
crv[i].setStyle(QwtPlotCurve::Sticks);
99
crv[i].setPen(QColor(Qt::darkBlue));
100
crv[i].setStyle(QwtPlotCurve::Lines);
103
#if QT_VERSION >= 0x040000
104
crv[i].setPen(QColor(Qt::darkBlue));
105
crv[i].setStyle(QwtPlotCurve::Lines);
106
crv[i].setRenderHint(QwtPlotItem::RenderAntialiased);
111
crv[i].setPen(QColor(Qt::darkCyan));
112
crv[i].setStyle(QwtPlotCurve::Steps);
115
sym.setStyle(QwtSymbol::XCross);
116
sym.setPen(QColor(Qt::darkMagenta));
117
crv[i].setSymbol(sym);
118
crv[i].setStyle(QwtPlotCurve::NoCurve);
125
for(i=0;i<CurvCnt;i++)
126
crv[i].setRawData(xval,yval,Size);
129
void MainWin::shiftDown(QRect &rect, int offset) const
131
#if QT_VERSION < 0x040000
132
rect.moveBy(0, offset);
134
rect.translate(0, offset);
138
#if QT_VERSION >= 0x040000
139
void MainWin::paintEvent(QPaintEvent *event)
141
QFrame::paintEvent(event);
143
QPainter painter(this);
144
painter.setClipRect(contentsRect());
145
drawContents(&painter);
153
void MainWin::drawContents(QPainter *painter)
157
QRect r = contentsRect();
159
deltay = r.height() / CurvCnt - 1;
166
for (i=0;i<CurvCnt;i++)
168
xMap.setPaintInterval(r.left(), r.right());
169
yMap.setPaintInterval(r.top(), r.bottom());
171
#if QT_VERSION >= 0x040000
172
painter->setRenderHint(QPainter::Antialiasing,
173
crv[i].testRenderHint(QwtPlotItem::RenderAntialiased) );
175
crv[i].draw(painter, xMap, yMap, r);
177
shiftDown(r, deltay);
183
r = contentsRect(); // reset r
184
painter->setFont(QFont("Helvetica", 8));
186
const int alignment = Qt::AlignTop|Qt::AlignHCenter;
188
painter->setPen(Qt::black);
190
painter->drawText(0,r.top(),r.width(), painter->fontMetrics().height(),
191
alignment, "Style: Line/Fitted, Symbol: Cross");
192
shiftDown(r, deltay);
194
painter->drawText(0,r.top(),r.width(), painter->fontMetrics().height(),
195
alignment, "Style: Sticks, Symbol: Ellipse");
196
shiftDown(r, deltay);
198
painter->drawText(0 ,r.top(),r.width(), painter->fontMetrics().height(),
199
alignment, "Style: Lines, Symbol: None");
200
shiftDown(r, deltay);
202
#if QT_VERSION >= 0x040000
203
painter->drawText(0 ,r.top(),r.width(), painter->fontMetrics().height(),
204
alignment, "Style: Lines, Symbol: None, Antialiased");
205
shiftDown(r, deltay);
209
painter->drawText(0, r.top(),r.width(), painter->fontMetrics().height(),
210
alignment, "Style: Steps, Symbol: None");
211
shiftDown(r, deltay);
213
painter->drawText(0,r.top(),r.width(), painter->fontMetrics().height(),
214
alignment, "Style: NoCurve, Symbol: XCross");
217
int main (int argc, char **argv)
219
QApplication a(argc, argv);
223
#if QT_VERSION < 0x040000