Re: print bug
Brought to you by:
rathmann
From: vasilief <vas...@pc...> - 2004-11-13 16:50:38
|
Le Vendredi 12 Novembre 2004 17:45, Gerard Vermeulen a =E9crit=A0: Hi, Here's the code: ///////////////////////////////////////////////////////////////////////////= ////////////////// #ifdef QWT_QTOPIA #include <qpe/qpeapplication.h> #endif #include <qapplication.h> #include <qwt_plot.h> #include <qwt_data.h> #include <math.h> #include <qprinter.h> //----------------------------------------------------------------- // simple.cpp // // A simple example which shows how to use QwtPlot and QwtData //----------------------------------------------------------------- class SimpleData: public QwtData { // The x values depend on its index and the y values // can be calculated from the corresponding x value.=20 // So we don=B4t need to store the values. // Such an implementation is slower because every point=20 // has to be recalculated for every replot, but it demonstrates how // QwtData can be used. public: SimpleData(double(*y)(double), size_t size): d_size(size), d_y(y) { } virtual QwtData *copy() const { return new SimpleData(d_y, d_size); } virtual size_t size() const { return d_size; } virtual double x(size_t i) const { return 0.1 * i; } virtual double y(size_t i) const { return d_y(x(i)); } private: size_t d_size; double(*d_y)(double); }; class Plot : public QwtPlot { public: Plot(); }; Plot::Plot() { setTitle("A Simple QwtPlot Demonstration"); setTitleFont(QFont("Times New Roman", 14, QFont::Bold,TRUE)); setAutoLegend(TRUE); // We want a legend setLegendPosition(QwtPlot::Right); // Set axis titles setAxisTitle(xBottom, "x -->"); setAxisTitle(yLeft, "y -->"); =20 // Insert new curves long cSin =3D insertCurve("y =3D sin(x)"); long cCos =3D insertCurve("y =3D cos(x)"); // Set curve styles setCurvePen(cSin, QPen(Qt::red)); setCurvePen(cCos, QPen(Qt::blue)); // Create sin and cos data const int nPoints =3D 100; setCurveData(cSin, SimpleData(::sin, nPoints)); setCurveData(cCos, SimpleData(::cos, nPoints)); // Insert markers =20 // ...a horizontal line at y =3D 0... long mY =3D insertLineMarker("y =3D 0", QwtPlot::yLeft); =20 setMarkerYPos(mY, 0.0); // ...a vertical line at x =3D 2 * pi long mX =3D insertLineMarker("x =3D 2 pi", QwtPlot::xBottom); setMarkerXPos(mX, 6.284); =20 QFont italicFont=3DQFont("Times New Roman", 12, QFont::Bold,TRUE); for (int i=3D 0;i<QwtPlot::axisCnt;i++) { setAxisFont (i,italicFont); setAxisTitleFont (i,italicFont); } replot(); =20 QPrinter printer; printer.setOrientation(QPrinter::Landscape); printer.setColorMode (QPrinter::Color); printer.setFullPage(TRUE); printer.setOutputToFile (TRUE); printer.setOutputFileName("test_italicFonts.eps"); =20 QwtPlotPrintFilter filter;=20 filter.setOptions(QwtPlotPrintFilter::PrintAll);=20 print(printer, filter);=20 } int main(int argc, char **argv) { #ifdef QWT_QTOPIA QPEApplication a(argc, argv); #else QApplication a(argc, argv); #endif Plot plot; a.setMainWidget(&plot); plot.resize(500,300); plot.show(); return a.exec();=20 } ////////////////////////////////////////////////// And concerning the EPS export for Windows, I'm using Qt Non-Commercial 3.2.= 1=20 and not Qt 2.3.0. So, is there a chance to produce EPS output from a QwtPlo= t=20 with this version of Qt? Best regards, Ion |