PDA

View Full Version : QPainter::begin: A paint device can only be painted by one painter at a time.



AviMittal
6th October 2009, 10:11
Hi

i am using Qt4.4.3 over linux (fedora 8).
I need to facilitate the auto-printing in my desktop application . So i dont want to show Print dialog to user. I such scenario to print the doc i did following:


#ifndef QT_NO_PRINTER
QPrinter printerObj(QPrinter::HighResolution);
printerObj.setOrientation(QPrinter::Portrait);
printerObj.setPageSize(QPrinter::A4);
printerObj.setFullPage(true);
printerObj.setNumCopies(1);

QPainter painter(&printerObj);
QTextDocument textDocument;
textDocument.setHtml(msgStr);
textDocument.print(&printerObj);
#endif

but by doing so its showing me following error message ( while running):

QPainter::begin: A paint device can only be painted by one painter at a time.

And sometimes its even crashing after that.

Please suggest...

Lykurg
6th October 2009, 10:20
QPrinter printerObj(QPrinter::HighResolution);
printerObj.setOrientation(QPrinter::Portrait);
printerObj.setPageSize(QPrinter::A4);
printerObj.setFullPage(true);
printerObj.setNumCopies(1);

// QPainter painter(&printerObj); // << You don't need that! (causes the error.)
QTextDocument textDocument;
textDocument.setHtml(msgStr);
textDocument.print(&printerObj);

AviMittal
6th October 2009, 10:57
if i try not to use QPainter then it crashes :(

Lykurg
6th October 2009, 11:19
if i try not to use QPainter then it crashes :(
What is your backtrace saying?

AviMittal
8th October 2009, 07:26
this is backtrace:

Printer::autoPrintFlag == true
Program received signal SIGPIPE, Broken pipe.
[Switching to Thread -1208396080 (LWP 26601)]
0x00110402 in __kernel_vsyscall ()

BACKTRACE:

(gdb) bt
#0 0x00110402 in __kernel_vsyscall ()
#1 0x00c824ab in write () from /lib/libpthread.so.0
#2 0x00ef3c09 in QFSFileEnginePrivate::writeFdFh (this=0xa0605d8,
data=0xa072458 "%!PS-Adobe-1.0\n%%BoundingBox: 0 0 595 841 \n%%Creator: Qt 4.4.3\n%%CreationDate: Thu Oct 8 10:57:49 2009\n%%Orientation: Portrait\n%%Pages: (atend)\n%%DocumentFonts: (atend)\n%%EndComments\n%%BeginProlog\n% P"..., len=14479) at io/qfsfileengine.cpp:761
#3 0x00efa7e2 in QFSFileEnginePrivate::nativeWrite (this=0xa0605d8,
data=0xa072458 "%!PS-Adobe-1.0\n%%BoundingBox: 0 0 595 841 \n%%Creator: Qt 4.4.3\n%%CreationDate: Thu Oct 8 10:57:49 2009\n%%Orientation: Portrait\n%%Pages: (atend)\n%%DocumentFonts: (atend)\n%%EndComments\n%%BeginProlog\n% P"..., len=4294967264) at io/qfsfileengine_unix.cpp:317
#4 0x00ef33a4 in QFSFileEngine::write (this=0xa06b090,
data=0xa072458 "%!PS-Adobe-1.0\n%%BoundingBox: 0 0 595 841 \n%%Creator: Qt 4.4.3\n%%CreationDate: Thu Oct 8 10:57:49 2009\n%%Orientation: Portrait\n%%Pages: (atend)\n%%DocumentFonts: (atend)\n%%EndComments\n%%BeginProlog\n% P"..., len=14479) at io/qfsfileengine.cpp:735
#5 0x00eb1575 in QFile::flush (this=0xa06a158) at io/qfile.cpp:1295
#6 0x00eb18e7 in QFile::writeData (this=0xa06a158,
data=0xa08caf8 "%%Page: 1 1 \n%%BeginPageSetup\nQI\n(F1) T1Setup\n%%EndPageSetup\nq\nQ\nQ q\nq\n0 0 0 scn\n/BSt 0 def\nQ\nQ q\n0 0 m\n9917 0 l\n9917 14033 l\n0 14033 l\n0 0 l\nh\nW* n\nq\n0 0 0 scn\n/BSt 0 def\n0.678431 0.847058 0.901960 s"..., len=10357) at io/qfile.cpp:1548
#7 0x00eb927b in QIODevice::write (this=0xa06a158,
data=0xa08caf8 "%%Page: 1 1 \n%%BeginPageSetup\nQI\n(F1) T1Setup\n%%EndPageSetup\nq\nQ\nQ q\nq\n0 0 0 scn\n/BSt 0 def\nQ\nQ q\n0 0 m\n9917 0 l\n9917 14033 l\n0 14033 l\n0 0 l\nh\nW* n\nq\n0 0 0 scn\n/BSt 0 def\n0.678431 0.847058 0.901960 s"..., maxSize=10357)
at io/qiodevice.cpp:1262
#8 0x00399756 in QPSPrintEnginePrivate::emitPages (this=0x9f94c60) at ../../include/QtCore/../../src/corelib/io/qiodevice.h:121
#9 0x0039c22d in QPSPrintEnginePrivate::flushPage (this=0x9f94c60, last=true) at painting/qprintengine_ps.cpp:604
#10 0x0039c729 in QPSPrintEngine::end (this=0xa046140) at painting/qprintengine_ps.cpp:715
#11 0x0036a64d in QPainter::end (this=0xbfd1c5ac) at painting/qpainter.cpp:1782
#12 0x0036a76a in ~QPainter (this=0xbfd1c5ac) at painting/qpainter.cpp:1380
#13 0x00481496 in QTextDocument::print (this=0xbfd20b78, printer=0xbfd20b6c) at text/qtextdocument.cpp:1645

AviMittal
20th October 2009, 08:18
did anyone know about this???