[Qt-interest] QPainter.drawText on windows: Access violation

Yanhao Zhu yanhaozhu at gmail.com
Thu Jul 2 05:32:13 CEST 2009


Hi, all,

I keep getting [Access violation] error with QPainter::drawText method
on windows. Here is the very simple code I used:

-------------------------------------------------------------
#include <QtCore/QCoreApplication>
#include <QImage>
#include <QPainter>
#include <QFont>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QFont font("Lucida Console", 16);

    QImage image(256, 256, QImage::Format_ARGB32);

    QPainter painter(&image);
    painter.setFont(font);
    painter.drawText(10, 100, "Hello, world!");

    image.save("test.png", "PNG");

    //return a.exec();
}
------------------------------------

The following is the partial call stack:
QtCored4.dll!QBasicAtomicInt::ref()  Line 257 + 0x8 bytes	C++
QtGuid4.dll!QColormap::QColormap()  Line 145 + 0x1d bytes	C++
QtGuid4.dll!QColormap::instance(int __formal=-1)  Line 141 + 0x13 bytes	C++
QtGuid4.dll!QNativeImage::systemFormat()  Line 138 + 0xb bytes	C++
QtGuid4.dll!QFontEngineWin::drawGDIGlyph(HFONT__ * font=0x2e0a0446,
unsigned int glyph=85, int margin=0, const QTransform & t={...})  Line
1411 + 0x29 bytes	C++
QtGuid4.dll!QFontEngineWin::alphaMapForGlyph(unsigned int glyph=85,
const QTransform & xform={...})  Line 1452 + 0x19 bytes	C++
QtGuid4.dll!QImageTextureGlyphCache::fillTexture(const
QTextureGlyphCache::Coord & c={...}, unsigned int g=85)  Line 227 +
0x36 bytes	C++
QtGuid4.dll!QTextureGlyphCache::populate(const QTextItemInt &
ti={...}, const QVarLengthArray<unsigned int,256> & glyphs={...},
const QVarLengthArray<QFixedPoint,256> & __formal={...})  Line 143	C++
QtGuid4.dll!QRasterPaintEngine::drawCachedGlyphs(const QPointF &
p={...}, const QTextItemInt & ti={...})  Line 2925	C++
QtGuid4.dll!QRasterPaintEngine::drawTextItem(const QPointF & p={...},
const QTextItem & textItem={...})  Line 3125	C++
QtGuid4.dll!QPainter::drawTextItem(const QPointF & p={...}, const
QTextItem & _ti={...})  Line 6123	C++
QtGuid4.dll!QPainter::drawText(const QPointF & p={...}, const QString
& str={...}, int tf=0, int justificationPadding=0)  Line 5680	C++
QtGuid4.dll!QPainter::drawText(const QPointF & p={...}, const QString
& str={...})  Line 5618	C++
QtGuid4.dll!QPainter::drawText(int x=10, int y=100, const QString &
s={...})  Line 910	C++


The same code worked fine in Mac OS X. Any idea why it did not work on
windows? Did I miss something?

I am using qt 4.5.1 on window with visual c++.


Thank you so much,

Yanhao Zhu



More information about the Qt-interest-old mailing list