Hallo Genossen,
hat jemand 'ne Idee, wie man beim Drucken mit QPrinter die Seitenzahlen ausblenden kann?
Seitenzahl beim Drucken ausblenden
Problem ist nicht zu lösen da die API von QTextDocument und eigentlich auch von QPrinter falsch designed ist.
Workaround:
Nun funktioniert's!
Workaround:
Code: Alles auswählen
QPrinter printer;
// printer setup
QTextDocument* printDocumentPtr = CreateDocumentForPrint(printer);
printDocumentPtr->print(&printer);
delete printDocumentPtr;
// hier die Imlementierung von CreateDocumentForPrint
QTextDocument* MyClass::CreateDocumentToPrint(QPrinter& printer) const
{
// m_report ist vom Typ QTextDocument
QTextDocument* outputPtr = m_report.clone();
qel_ASSERT(outputPtr != NULL);
QPainter p(&printer);
QAbstractTextDocumentLayout* layout = outputPtr->documentLayout();
layout->setPaintDevice(p.device());
const int dpiy = p.device()->logicalDpiY();
const int margin = (int) ((2/2.54)*dpiy); // 2 cm margins
QTextFrameFormat fmt = outputPtr->rootFrame()->frameFormat();
fmt.setMargin(margin);
outputPtr->rootFrame()->setFrameFormat(fmt);
QRectF body = QRectF(0, 0, p.device()->width(), p.device()->height());
QFont font(outputPtr->defaultFont());
font.setPointSize(10); // we define 10pt to be a nice base size for printing
outputPtr->setDefaultFont(font);
outputPtr->setPageSize(body.size());
return outputPtr;
}