Seite 1 von 1

Seitenzahl beim Drucken ausblenden

Verfasst: 27. November 2006 13:30
von lepsai
Hallo Genossen,

hat jemand 'ne Idee, wie man beim Drucken mit QPrinter die Seitenzahlen ausblenden kann?

Verfasst: 27. November 2006 18:05
von upsala
Du meinst im QPrintDialog? Schau dir mal QAbstractPrintDialog::PrintDialogOptions an. (kanns selber gerade nicht testen...)

Verfasst: 27. November 2006 18:38
von lepsai
Nein, über QPrintDialog geht's nicht... Noch Ideen?

Verfasst: 17. August 2007 13:13
von lepsai
Problem ist nicht zu lösen da die API von QTextDocument und eigentlich auch von QPrinter falsch designed ist.

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;
}
Nun funktioniert's!