[Qt-interest] Creating a QPaintEngine
Tony Rietwyk
tony.rietwyk at rightsoft.com.au
Sat Jul 24 05:18:02 CEST 2010
Hi Everybody,
How do I create a QPaintEngine decendent? The following compiles and works on WinXP with Visual Studio 2008 and qmake'd projects. On Mac OS X 10.5 with qmake'd XCode projects, it can't find private/qpaintengine.h.
Is there a more correct way of doing this?
The use case is to output a CSV file containing the text written from the third-party NCReport components.
The code below was extracted from the .cpp file:
#include <QApplication>
#include <QFile>
#include <QHash>
#include <QPaintDevice>
#include <QPaintEngine>
#include <QTextCodec>
#include <QTextStream>
#include <QtDebug>
#include "private/qpaintengine_p.h"
class TTextOutputEnginePrivate : public QPaintEnginePrivate
{
public:
// Various extra fields...
};
static inline QPaintEngine::PaintEngineFeatures textOutputEngineFeatures()
{
return QPaintEngine::PaintEngineFeatures(
QPaintEngine::AllFeatures
& ~QPaintEngine::PatternBrush
& ~QPaintEngine::PerspectiveTransform
& ~QPaintEngine::ConicalGradientFill
& ~QPaintEngine::PorterDuff);
}
class TTextOutputEngine : public QPaintEngine
{
Q_DECLARE_PRIVATE(TTextOutputEngine)
public:
TTextOutputEngine()
: QPaintEngine(*new TTextOutputEnginePrivate,
textOutputEngineFeatures())
{
}
bool begin(QPaintDevice *device);
bool end();
void updateState(const QPaintEngineState &state);
void drawTextItem(const QPointF &pt, const QTextItem &item);
QPaintEngine::Type type() const { return QPaintEngine::User; }
void newPage();
};
Thanks,
Tony.
More information about the Qt-interest-old
mailing list